Gunar Megger adds support for Alan Map 500 and Holux GM101.
authorrobertl <robertl>
Thu, 18 Jan 2007 05:57:44 +0000 (05:57 +0000)
committerrobertl <robertl>
Thu, 18 Jan 2007 05:57:44 +0000 (05:57 +0000)
Makefile.in
alan.c [new file with mode: 0644]
reference/alantrl.gpx [new file with mode: 0644]
reference/alantrl.trl [new file with mode: 0644]
reference/alanwpr.gpx [new file with mode: 0644]
reference/alanwpr.wpr [new file with mode: 0644]
testo
vecs.c
xmldoc/formats/alan.xml [new file with mode: 0644]
xmldoc/formats/garmin.xml

index 3aa583c270ce2b00e88fdba21ab07119a050a3f2..7ae5b5146912a85086e4d085310965ba9842ce2e 100644 (file)
@@ -54,7 +54,7 @@ FMTS=magproto.o gpx.o geo.o mapsend.o mapsource.o garmin_tables.o \
        tef_xml.o maggeo.o pathaway.o vitosmt.o gdb.o bcr.o coto.o \
        ignrando.o stmwpp.o msroute.o cst.o nmn4.o mag_pdb.o compegps.o \
        yahoo.o unicsv.o wfff_xml.o garmin_txt.o axim_gpb.o gpssim.o \
-       wbt-200.o stmsdf.o gtrnctr.o dmtlog.o raymarine.o
+       wbt-200.o stmsdf.o gtrnctr.o dmtlog.o raymarine.o alan.o
 
 FILTERS=position.o radius.o duplicate.o arcdist.o polygon.o smplrout.o \
        reverse_route.o sort.o stackfilter.o trackfilter.o discard.o \
diff --git a/alan.c b/alan.c
new file mode 100644 (file)
index 0000000..a93c661
--- /dev/null
+++ b/alan.c
@@ -0,0 +1,940 @@
+/*
+
+    Read/write Alan Map500 Waypoints, Routes and Tracklogs.
+
+    Provides "alanwpr" and "alantrl" formats for gpsbabel.
+    Currently supports OS 2.xx only.
+
+    Copyright (C) 2007  Gunar Megger, 0xff@quantentunnel.de
+    Copyright (C) 2005  Robert Lipe, robertlipe@usa.net
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+ */
+
+#include <stdio.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <time.h>
+#include "defs.h"
+
+
+#define MYNAME "alan"
+
+#define MAXWPT      1000               /* old 500 */
+
+#define MAXRTE      50                 /* old 20 */
+#define MAXWPTINRTE 150                        /* old 30 */
+
+#define MAXTRK      8                  /* old 5 */
+#define MAXPTINTRK  2500
+
+#define WPT_NAME_LEN    8
+#define WPT_COMMENT_LEN 12
+
+#define RTE_NAME_LEN    8
+#define RTE_COMMENT_LEN 12
+
+#define TRK_NAME_LEN    12
+#define TRK_COMMENT_LEN 13
+
+struct wpthdr {
+  uint32_t id;
+  int16_t num;
+  int16_t next;
+  int16_t idx[MAXWPT];
+  uint8_t used[MAXWPT];
+};
+
+struct wpt {
+  char name[WPT_NAME_LEN];
+  char comment[WPT_COMMENT_LEN];
+  struct {
+    int32_t x;                         /* degree * 36000 */
+    int32_t y;                         /* degree * 36000  */
+  } pt;
+  int32_t date;
+  int32_t time;
+  int16_t usecount;
+  int8_t checked;
+  int8_t reserved;
+};
+
+struct rtehdr {
+  uint32_t id;
+  int16_t num;
+  int16_t next;
+  int16_t idx[MAXRTE];
+  uint8_t used[MAXRTE];
+  int16_t rteno;
+};
+
+struct rte {
+  char name[RTE_NAME_LEN];
+  char comment[RTE_COMMENT_LEN];
+  int16_t wptnum;
+  int16_t wptidx[MAXWPTINRTE];
+  int16_t reserved;
+  int32_t date;
+  int32_t time;
+};
+
+struct wprdata {
+  struct wpthdr wpthdr;
+  struct wpt    wpt[MAXWPT];
+  struct rtehdr rtehdr;
+  struct rte    rte[MAXRTE];
+};
+
+struct trkhdr {
+  int16_t totalpt;
+  int16_t next;
+  char name[TRK_NAME_LEN];             /* 10, null terminated */
+  char comment[TRK_COMMENT_LEN];       /* 12, null terminated */
+  uint8_t reserved[3];
+  uint32_t occupied;
+  uint32_t show;
+  uint32_t fill;
+};
+
+struct loghdr {
+  uint32_t id;
+  int16_t num;
+  int16_t next;
+  int32_t date;
+  int32_t time;
+  struct trkhdr trkhdr[MAXTRK];
+};
+
+struct trklog {
+  struct {
+    int32_t x;                         /* degree * 36000 */
+    int32_t y;                         /* degree * 36000  */
+  } pt[MAXPTINTRK];
+  struct {
+    int16_t speed;                     /* km/h * 200 */
+    int16_t height;                    /* m * 5 */
+  } sh[MAXPTINTRK];
+};
+
+struct trldata {
+  struct loghdr loghdr;
+  struct trklog trklog[MAXTRK];
+};
+
+#define WPT_HDR_ID 0x5C38A600
+#define RTE_HDR_ID 0xD87F5900
+#define TRL_HDR_ID 0x38CB1200
+
+#define WPT_IDX_NONE -1                        /* 0xffff */
+#define WPT_USED      0xff
+#define WPT_UNUSED    0
+#define WPT_CHECKED   1
+#define WPT_UNCHECKED 0
+
+#define RTE_IDX_NONE   -1              /* 0xffff */
+#define RTE_USED        0xff
+#define RTE_UNUSED      0
+#define RTE_RTENO_NONE -1
+
+#define TRK_USED     1
+#define TRK_UNUSED   0
+#define TRK_SHOW     1
+#define TRK_HIDE     0
+#define TRK_FILL     1
+#define TRK_WRAP     0
+
+#define MAP500_PT_SCALE 36000.0
+#define pt2deg(P) ((double)(P) / MAP500_PT_SCALE)
+#define deg2pt(D) (int32_t)si_round((double)(D) * MAP500_PT_SCALE)
+
+#define MAP500_ALTITUDE_SCALE   5.0
+#define hgt2m(A) ((double)(A) / MAP500_ALTITUDE_SCALE)
+#define m2hgt(A) (int16_t)si_round((double)(A) * MAP500_ALTITUDE_SCALE)
+
+#define MAP500_SPEED_SCALE    720.0
+#define sp2mps(S) ((double)(S) / MAP500_SPEED_SCALE)
+#define mps2sp(S) (int16_t)si_round((double)(S) * MAP500_SPEED_SCALE)
+
+#define  BYTEORDER_TEST  0x04030201    /* 32bit reference value */
+enum {
+  SWAP_NONE  = 0x1234,                 /* map500 regular */
+  SWAP_BYTES = 0x2143,                 /* bytes swapped */
+  SWAP_WORDS = 0x3412,                 /* words swapped */
+  SWAP_BOTH  = 0x4321                  /* words + bytes swapped */
+};
+
+/**************************************************************************/
+
+static gbfile *fin = NULL, *fout = NULL;
+struct wprdata WPR;
+struct trldata TRL;
+
+static arglist_t wpr_args[] = {
+  /*
+  {"os3", &osversion, "Operating system version 3",
+          NULL, ARGTYPE_BOOL, ARGNOMINMAX },
+  */
+  ARG_TERMINATOR
+};
+static arglist_t trl_args[] = {
+  /*
+  {"os3", &osversion, "Operating system version 3",
+          NULL, ARGTYPE_BOOL, ARGNOMINMAX },
+  */
+  ARG_TERMINATOR
+};
+
+/**************************************************************************/
+
+static unsigned int byte_order(void) {
+  unsigned long test = BYTEORDER_TEST;
+  unsigned char *ptr;
+  unsigned int order;
+
+  ptr = (unsigned char *)(&test);
+  order = (ptr[0] << 12) | (ptr[1] << 8) | (ptr[2] << 4) | ptr[3];
+
+  return order;
+}
+
+static void sw_bytes(void *word) {
+  uint8_t *p = word;
+  uint16_t *r = word;
+
+  *r = (uint16_t)(p[0] << 8 | p[1]);
+}
+static void sw_words(void *dword) {
+  uint16_t *p = dword;
+  uint32_t *r = dword;
+
+  *r = (uint32_t)(p[0] << 16 | p[1]);
+}
+static void rev_bytes(void *dword) {
+  uint8_t *p = dword;
+  uint32_t *r = dword;
+
+  *r = (uint32_t)(p[0] << 24 | p[1] << 16 | p[2] << 8 | p[0]);
+}
+
+static void swap_wpthdr(struct wpthdr *wpthdr,
+                       void (*swap16)(void *), void (*swap32)(void *)) {
+  int i;
+
+  if ( swap32 != NULL ) {
+    swap32( &wpthdr->id );
+  }
+  if ( swap16 != NULL ) {
+    swap16( &wpthdr->num );
+    swap16( &wpthdr->next );
+    for (i=0; i<MAXWPT; i++)
+      swap16( &wpthdr->idx[i] );
+  }
+}
+
+static void swap_wpt(struct wpt *wpt,
+                    void (*swap16)(void *), void (*swap32)(void *)) {
+  if ( swap16 != NULL ) {
+    swap16( &wpt->usecount );
+  }
+  if ( swap32 != NULL ) {
+    swap32( &wpt->pt.x );
+    swap32( &wpt->pt.y );
+    swap32( &wpt->date );
+    swap32( &wpt->time );
+  }
+}
+
+static void swap_rtehdr(struct rtehdr *rtehdr,
+                       void (*swap16)(void *), void (*swap32)(void *)) {
+  int i;
+
+  if ( swap16 != NULL) {
+    swap16( &rtehdr->num );
+    swap16( &rtehdr->next );
+    for (i=0; i<MAXRTE; i++)
+      swap16( &rtehdr->idx[i] );
+    swap16( &rtehdr->rteno );
+  }
+  if ( swap32 != NULL ) {
+    swap32( &rtehdr->id );
+  }
+}
+
+static void swap_rte(struct rte *rte,
+                    void (*swap16)(void *), void (*swap32)(void *)) {
+  int i;
+
+  if (swap16 != NULL) {
+    swap16( &rte->wptnum );
+    for (i=0; i<MAXWPTINRTE; i++)
+      swap16( &rte->wptidx[i] );
+    swap16( &rte->reserved );
+  }
+  if ( swap32 != NULL ) {
+    swap32( &rte->date );
+    swap32( &rte->time );
+  }
+}
+
+static void wpr_swap(struct wprdata *wprdata) {
+  void (*swap16)(void *);
+  void (*swap32)(void *);
+  int i;
+
+  switch( byte_order() ) {
+  case SWAP_NONE:                 /* same byte oder, LITTLE_ENDIAN */
+    return;
+    break;
+  case SWAP_BOTH:                 /* swap words and bytes, BIG_ENDIAN */
+    swap16 = sw_bytes;
+    swap32 = rev_bytes;
+    break;
+  case SWAP_WORDS:                /* swap words, PDP_ENDIAN */
+    swap16 = NULL;
+    swap32 = sw_words;
+    break;
+  case SWAP_BYTES:                /* swap bytes */
+    swap16 = sw_bytes;
+    swap32 = NULL;
+    break;
+  default:
+    return;                       /* never reached */
+  }
+  
+  swap_wpthdr( &(wprdata->wpthdr), swap16, swap32 );
+  for (i=0; i< MAXWPT; i++)
+    swap_wpt( &(wprdata->wpt[i]), swap16, swap32 );
+  swap_rtehdr( &(wprdata->rtehdr), swap16, swap32 );
+  for (i=0; i<MAXRTE; i++)
+    swap_rte( &(wprdata->rte[i]), swap16, swap32 );
+}
+
+static void swap_trkhdr(struct trkhdr *trkhdr,
+                       void (*swap16)(void *), void (*swap32)(void *)) {
+  if ( swap16 != NULL ) {
+    swap16( &(trkhdr->totalpt) );
+    swap16( &(trkhdr->next) );
+  }
+  if ( swap32 != NULL ) {
+    swap32( &(trkhdr->occupied) );
+    swap32( &(trkhdr->show) );
+    swap32( &(trkhdr->fill) );
+  }
+}
+
+static void swap_loghdr(struct loghdr *loghdr,
+                       void (*swap16)(void *), void (*swap32)(void *)) {
+  int i;
+
+  if ( swap16 != NULL ) {
+    swap16( &(loghdr->num) );
+    swap16( &(loghdr->next) );
+  }
+  if ( swap32 != NULL ) {
+    swap32( &(loghdr->id) );
+    swap32( &(loghdr->date) );
+    swap32( &(loghdr->time) );
+  }
+  for (i=0; i>MAXTRK; i++)
+    swap_trkhdr( &(loghdr->trkhdr[i]), swap16, swap32 );
+}
+
+static void swap_trklog(struct trklog *trklog,
+                       void (*swap16)(void *), void (*swap32)(void *)) {
+  int i;
+
+  if ( swap16 != NULL ) {
+    for (i=0; i<MAXPTINTRK; i++) {
+      swap16( &(trklog->sh[i].speed) );
+      swap16( &(trklog->sh[i].height) );
+    }
+  }
+  if ( swap32 != NULL ) {
+    for (i=0; i<MAXPTINTRK; i++) {
+      swap32( &(trklog->pt[i].x) );
+      swap32( &(trklog->pt[i].y) );
+    }
+  }
+}
+
+static void trl_swap(struct trldata *trldata) {
+  void (*swap16)(void *);
+  void (*swap32)(void *);
+  int i;
+
+  switch( byte_order() ) {
+  case SWAP_NONE:                 /* same byte oder, LITTLE_ENDIAN */
+    return;
+    break;
+  case SWAP_BOTH:                 /* swap words and bytes, BIG_ENDIAN */
+    swap16 = sw_bytes;
+    swap32 = rev_bytes;
+    break;
+  case SWAP_WORDS:                /* swap words, PDP_ENDIAN */
+    swap16 = NULL;
+    swap32 = sw_words;
+    break;
+  case SWAP_BYTES:                /* swap bytes */
+    swap16 = sw_bytes;
+    swap32 = NULL;
+    break;
+  default:
+    return;                        /* never reached */
+  }
+
+  swap_loghdr( &(trldata->loghdr), swap16, swap32);
+  for (i=0; i<MAXTRK; i++)
+    swap_trklog( &(trldata->trklog[i]), swap16, swap32);
+}
+
+
+/**************************************************************************/
+
+static void str2lab(char *dest, char *src, size_t len, char *fmt, int n) {
+  int i,j;
+
+  j = 0;
+  if (src != NULL) {
+    for (i=0; i<len && src[i] != '\0'; i++) {
+      if (isprint(src[i]))
+         dest[j++] = src[i];
+    }
+  }
+  if (j == 0 && fmt != NULL) {
+    snprintf(dest, len, fmt, n);
+    j = strlen(dest);
+  }
+  if ( j < len )
+    memset(dest+j, ' ', len-j);
+}
+
+static void pack_time(time_t t, int32_t *date, int32_t *time) {
+  struct tm *tm;
+
+  tm = gmtime(&t);
+  *date = tm->tm_mday | ((tm->tm_mon+1)<<8) | ((tm->tm_year+1900)<<16);
+  *time = t % 86400;
+}
+
+static time_t unpack_time(int32_t date, int32_t time) {
+  time_t result;
+  short year, month, day;
+  static int m_to_d[12] =
+    {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
+
+  year  = (date >> 16) & 0xffff;
+  month = (date >> 8) & 0xff;  /* 1-12 */
+  day   = date & 0xff;          /* 1-31 */
+
+  month -= 1;                  /* fit struct tm */
+  year += month / 12;
+  
+  if (month < 0) {
+    year -= 1;
+    month += 12;
+  }
+  result = (year - 1970) * 365 + m_to_d[month];
+  if (month <= 1)
+    year -= 1;
+  result += (year - 1968) / 4;
+  result -= (year - 1900) / 100;
+  result += (year - 1600) / 400;
+  result += day;
+  result -= 1;
+  result *= 86400;
+  result += time;           /* map500 time is inseconds of the day */
+  
+  return result;
+}
+
+/**************************************************************************/
+
+static waypoint * get_wpt(struct wprdata *wprdata, unsigned n) {
+  struct wpthdr *wpthdr;
+  struct wpt *wpt;
+  int j, idx;
+  waypoint *WP;
+
+  wpthdr = &(wprdata->wpthdr);
+  idx = wpthdr->idx[n];
+
+  if (idx == WPT_IDX_NONE || wpthdr->used[idx] == WPT_UNUSED)
+    return NULL;
+  wpt = &(wprdata->wpt[idx]);
+    
+  WP = waypt_new();
+  WP->latitude  = -pt2deg(wpt->pt.y);
+  WP->longitude =  pt2deg(wpt->pt.x);
+  WP->creation_time = unpack_time(wpt->date, wpt->time);
+  for(j=WPT_NAME_LEN-1; j >= 0 && wpt->name[j] == ' '; j--) {};
+  WP->shortname = xstrndup(wpt->name,j+1);
+  for(j=WPT_COMMENT_LEN-1; j >= 0 && wpt->comment[j] == ' '; j--) {};
+  if (j >= 0)
+    WP->description = xstrndup(wpt->comment, j+1);
+  else
+    WP->description = xstrdup("");
+  WP->notes = xstrdup("");
+
+  return WP;
+}
+
+static void wpr_read(void) {
+  struct wprdata wprdata;
+  struct rtehdr *rtehdr;
+  struct rte *rte;
+  int i, j, idx;
+  waypoint *WP;
+  route_head *RT;
+
+  if ( gbfread(&wprdata, sizeof(struct wprdata), 1, fin) != 1 )
+    fatal(MYNAME ": Read error on %s\n", fin->name);
+  wpr_swap(&wprdata);
+  if ( wprdata.wpthdr.id != WPT_HDR_ID ||
+       wprdata.rtehdr.id != RTE_HDR_ID )
+    fatal(MYNAME ": %s is not in Alan .wpr format.\n", fin->name);
+
+  /* waypoints */
+  for (i=0; i<MAXWPT; i++) {
+    WP = get_wpt(&wprdata, i);
+    if ( WP != NULL )
+      waypt_add(WP);
+  }
+
+  /* routes */
+  rtehdr = &(wprdata.rtehdr);
+  for (i=0; i<MAXRTE; i++) {
+    idx = rtehdr->idx[i];
+    if (idx == RTE_IDX_NONE || rtehdr->used[idx] == RTE_UNUSED)
+      continue;
+    rte = &(wprdata.rte[idx]);
+    
+    RT = route_head_alloc();
+    RT->rte_num = i;
+    for(j=RTE_NAME_LEN-1; j >= 0 && rte->name[j] == ' '; j--) {};
+    RT->rte_name = xstrndup(rte->name,j+1);
+    for(j=RTE_COMMENT_LEN-1; j >= 0 && rte->comment[j] == ' '; j--) {};
+    if (j >= 0)
+      RT->rte_desc = xstrndup(rte->comment,j+1);
+    else
+      RT->rte_desc = xstrdup("");
+    RT->rte_waypt_ct = rte->wptnum;
+    route_add_head(RT);          
+
+    /* route points */
+    for(j=0; j<rte->wptnum; j++) {
+      WP = get_wpt(&wprdata, rte->wptidx[j]);
+      if ( WP != NULL )
+       route_add_wpt(RT, WP);
+    }
+  }
+}
+
+static void trl_read(void) {
+  struct trldata trldata;
+  struct trkhdr *trkhdr;
+  struct trklog *trklog;
+  waypoint *WP;
+  route_head *TL;
+  int i, j;
+
+  for (i=0; i<MAXTRK; i+=2) {
+    gbfseek(fin, 0x10000 * (i/2), SEEK_SET);
+    if ( gbfread( &(trldata.trklog[i]), sizeof(struct trklog), 2, fin) != 2)
+      fatal(MYNAME ": Read error on %s\n", fin->name);
+  }
+  gbfseek(fin, 0x10000 * MAXTRK/2, SEEK_SET);
+  if ( gbfread( &(trldata.loghdr), sizeof(struct loghdr), 1, fin) != 1)
+    fatal(MYNAME ": Read error on %s\n", fin->name);
+  trl_swap(&trldata);
+  if ( trldata.loghdr.id != TRL_HDR_ID )
+    fatal(MYNAME ": %s is not in Alan .trl format.\n", fin->name);
+
+  for(i=0; i<MAXTRK; i++) {
+    /* track header */
+    trkhdr = &(trldata.loghdr.trkhdr[i]);
+    if (trkhdr->occupied == TRK_UNUSED)
+      continue;
+    TL = route_head_alloc();
+    for(j=TRK_NAME_LEN-1;
+       j >= 0 && (trkhdr->name[j] == ' ' || trkhdr->name[j] == '\0');
+       j--) {};
+    TL->rte_name = xstrndup(trkhdr->name,j+1);
+    for(j=TRK_COMMENT_LEN-1;
+       j >= 0 && (trkhdr->comment[j] == ' ' || trkhdr->comment[j] == '\0');
+       j--) {};
+    TL->rte_desc = xstrndup(trkhdr->comment,j+1);
+    TL->rte_num = i;
+    TL->rte_waypt_ct = trkhdr->totalpt;
+    track_add_head(TL);          
+
+    /* track points */
+    trklog = &(trldata.trklog[i]);
+    for(j=0; j<trkhdr->totalpt; j++) {
+      WP = waypt_new();
+      WP->latitude  = -pt2deg(trklog->pt[j].y);
+      WP->longitude =  pt2deg(trklog->pt[j].x);
+      WP->altitude  =  hgt2m(trklog->sh[j].height);
+      if ( trklog->sh[j].speed >= 0 )
+       WP->speed     =  sp2mps(trklog->sh[j].speed);
+      else                             /* bad speed < 0 - set to 0.0 */
+       WP->speed     =  unknown_speed;
+      track_add_wpt(TL, WP);
+    }
+  }
+}
+
+/**************************************************************************/
+
+static int find_wpt(struct wprdata *wprdata, const waypoint *WP) {
+  struct wpt pattern, *wpt;
+  int i, wpt_idx;
+
+  str2lab(pattern.name, WP->shortname, WPT_NAME_LEN, NULL, 0);
+  pattern.pt.x = deg2pt(WP->longitude);
+  pattern.pt.y = deg2pt(-WP->latitude);
+
+  wpt = wprdata->wpt;
+  for (i=0; i<MAXWPT; i++) {
+    wpt_idx = wprdata->wpthdr.idx[i]; 
+    if ( wpt_idx == WPT_IDX_NONE ||
+        wprdata->wpthdr.used[wpt_idx] == WPT_UNUSED ) 
+      continue;
+    if ( strncmp( wpt[wpt_idx].name, pattern.name, WPT_NAME_LEN) == 0 &&
+        wpt[wpt_idx].pt.x == pattern.pt.x &&
+        wpt[wpt_idx].pt.y == pattern.pt.y )
+      return i;
+  }
+
+  return -1;
+}
+
+static int add_wpt(struct wprdata *wprdata, const waypoint *WP,int isroute) {
+  struct wpthdr *wpthdr;
+  int hdr_idx, wpt_idx;
+  struct wpt *wpt;
+  int i;
+
+  wpthdr = &(wprdata->wpthdr);
+
+  hdr_idx = find_wpt(wprdata, WP);
+  if ( hdr_idx >= 0 ) {
+    /* duplicate waypoint */
+    if (isroute) {
+      wpt = &(wprdata->wpt[wpthdr->idx[hdr_idx]]);
+      wpt->usecount ++;
+    }
+    /*
+    warning(MYNAME ": using duplicate waypoint '%s' at (%f°, %f°)\n",
+           WP->shortname, WP->latitude, WP->longitude);
+    */
+    return hdr_idx;
+  }
+
+  for (i=0; i<MAXWPT && wpthdr->idx[i] != WPT_IDX_NONE; i++) { }
+  hdr_idx = i;
+  for (i=0; i<MAXWPT && wpthdr->used[i] != WPT_UNUSED; i++) { }
+  wpt_idx = i;
+  if (wpthdr->num >= MAXWPT || hdr_idx >= MAXWPT || wpt_idx >= MAXWPT )
+    fatal(MYNAME ": Can't store more than %u waypoints\n", MAXWPT);
+
+  wpt = &(wprdata->wpt[wpt_idx]);
+  str2lab(wpt->name, WP->shortname, WPT_NAME_LEN, "W%05d", wpt_idx);
+  str2lab(wpt->comment, WP->description, WPT_COMMENT_LEN, NULL, 0);
+  wpt->pt.x = deg2pt(WP->longitude);
+  wpt->pt.y = deg2pt(-WP->latitude);
+  wpt->usecount = isroute ? 1 : 0;
+  wpt->checked  = isroute ? 0 : 1;
+  wpt->reserved = 0;
+  pack_time(WP->creation_time, &(wpt->date), &(wpt->time));
+
+  wpthdr->idx[hdr_idx] = wpt_idx;
+  wpthdr->used[wpt_idx] = WPT_USED;
+  wpthdr->num++;
+  wpthdr->next++;
+  if (wpthdr->next >= MAXWPT)          /* overrun */
+    wpthdr->next = 0;
+
+  return hdr_idx;
+}
+
+static void wpr_waypoint(const waypoint *WP) {
+  add_wpt(&WPR, WP, 0);
+}
+
+static void wpr_route_hdr(const route_head *RT) {
+  struct rtehdr *rtehdr;
+  int hdr_idx, rte_idx;
+  struct rte *rte;
+  int i;
+  
+  rtehdr = &(WPR.rtehdr);
+  for (i=0; i<MAXRTE && rtehdr->idx[i] != RTE_IDX_NONE; i++) { }
+  hdr_idx = i;
+  for (i=0; i<MAXRTE && rtehdr->used[i] != RTE_UNUSED; i++) { }
+  rte_idx = i;
+  if (rtehdr->num >= MAXRTE || hdr_idx >= MAXRTE || rte_idx >= MAXRTE )
+    fatal(MYNAME ": Can't store more than %u routes", MAXRTE);
+
+  rte = &(WPR.rte[rte_idx]);
+  str2lab(rte->name, RT->rte_name, RTE_NAME_LEN, "R%03d", rte_idx);
+  str2lab(rte->comment, RT->rte_desc, RTE_COMMENT_LEN, NULL, 0);
+  pack_time(time(NULL), &(rte->date), &(rte->time));
+
+  rtehdr->idx[hdr_idx] = rte_idx;
+  rtehdr->used[rte_idx] = RTE_USED;
+  rtehdr->num++;
+  rtehdr->next++;
+  if (rtehdr->next >= MAXRTE)          /* overrun */
+    rtehdr->next = 0;
+
+  /* if you want the new route to be active, uncomment the next line */
+  /* rtehdr->rteno = rte_idx; */
+}
+
+static void wpr_route_wpt(const waypoint *WP) {
+  struct rte *rte;
+  int wpt_idx;
+
+  rte = &(WPR.rte[WPR.rtehdr.num -1]);
+  if ( rte->wptnum >= MAXWPTINRTE )
+    fatal(MYNAME ": Can't store more than %u waypoints per route", MAXWPTINRTE);
+
+  wpt_idx = add_wpt(&WPR, WP, 1);
+
+  rte->wptidx[rte->wptnum] = wpt_idx;
+  rte->wptnum ++;
+}
+
+static void wpr_route_trl(const route_head *RT) {
+  /* should we do some final sanity checks? */
+}
+
+static void wpr_write(void) {
+  int i;
+
+  WPR.wpthdr.id = WPT_HDR_ID;
+  WPR.wpthdr.num = WPR.wpthdr.next = 0;
+  for (i=0; i<MAXWPT; i++) {
+    WPR.wpthdr.idx[i]  = WPT_IDX_NONE;
+    WPR.wpthdr.used[i] = WPT_UNUSED;
+  }
+  memset(WPR.wpt, 0, MAXWPT * sizeof(struct wpt));
+  WPR.rtehdr.id = RTE_HDR_ID;
+  WPR.rtehdr.num = WPR.rtehdr.next = 0;
+  for (i=0; i<MAXRTE; i++) {
+    WPR.rtehdr.idx[i] = RTE_IDX_NONE;
+    WPR.rtehdr.used[i] = RTE_UNUSED;
+  }
+  WPR.rtehdr.rteno = RTE_RTENO_NONE;
+  memset(WPR.rte, 0, MAXRTE * sizeof(struct rte));
+
+  waypt_disp_all(wpr_waypoint);
+  route_disp_all(wpr_route_hdr, wpr_route_trl, wpr_route_wpt);
+
+  wpr_swap(&WPR);
+  if ( gbfwrite(&WPR, sizeof(struct wprdata), 1, fout) != 1 )
+    fatal(MYNAME ": Write error on %s\n", fout->name);
+}
+
+/**************************************************************************/
+
+static void trl_track_hdr(const route_head *TL) {
+  struct trkhdr *trkhdr;
+  int idx, l;
+
+  trkhdr = TRL.loghdr.trkhdr;
+  
+  for (idx=0; idx< MAXTRK && trkhdr[idx].occupied != TRK_UNUSED; idx++) {};
+  if (idx >= MAXTRK)
+    fatal(MYNAME ": Can't store more than %u tracklogs", MAXTRK);
+
+  if ( TL->rte_name != NULL )
+    strncpy(trkhdr[idx].name, TL->rte_name, TRK_NAME_LEN);
+  if ( *(trkhdr[idx].name) == '\0' )
+    sprintf(trkhdr[idx].name, "T%03d", idx);
+  trkhdr[idx].name[TRK_NAME_LEN-1] = '\0';
+
+  if ( TL->rte_desc != NULL ) {
+    strncpy(trkhdr[idx].comment, TL->rte_desc, TRK_COMMENT_LEN);
+    l = strlen(TL->rte_desc);
+    if ( l < TRK_COMMENT_LEN-1 )
+      memset(trkhdr[idx].comment + l, ' ', TRK_COMMENT_LEN - l);
+  }
+  trkhdr[idx].comment[TRK_COMMENT_LEN-1] = '\0';
+
+  trkhdr[idx].comment[TRK_COMMENT_LEN-1] = '\0';
+  trkhdr[idx].occupied = TRK_USED;
+  trkhdr[idx].totalpt = 0;
+  trkhdr[idx].next = 0;
+
+  TRL.loghdr.num = idx;
+}
+
+static void trl_track_wpt(const waypoint *WP) {
+  struct trklog *trklog;
+  struct trkhdr *trkhdr;
+  int trk_idx, log_idx;
+  
+  trk_idx = TRL.loghdr.num;
+
+  trkhdr = &(TRL.loghdr.trkhdr[trk_idx]);
+  if ( trkhdr->totalpt >= MAXPTINTRK )
+    fatal(MYNAME ": Can't store more than %u points per track", MAXPTINTRK);
+  log_idx = trkhdr->next;
+
+  trklog = &(TRL.trklog[trk_idx]);
+  trklog->pt[log_idx].x = deg2pt( WP->longitude);
+  trklog->pt[log_idx].y = deg2pt(-WP->latitude);
+  if ( WP->speed != unknown_speed )
+    trklog->sh[log_idx].speed =  mps2sp(WP->speed);
+  if ( WP->altitude != unknown_alt )
+    trklog->sh[log_idx].height = m2hgt(WP->altitude);
+
+  trkhdr->totalpt ++;
+  trkhdr->next = trkhdr->totalpt;
+}
+
+static void trl_track_tlr(const route_head *TL) {
+  struct trkhdr *trkhdr;
+  int trk_idx;
+
+  trk_idx = TRL.loghdr.num;
+  trkhdr = &(TRL.loghdr.trkhdr[trk_idx]);
+
+  if ( trkhdr->totalpt == 0 )
+    trkhdr->occupied = TRK_UNUSED;
+
+  TRL.loghdr.num = -1;
+}
+
+static void trl_write(void) {
+  struct trkhdr *trkhdr;
+  void *buf;
+  int i;
+  size_t fill;
+
+  TRL.loghdr.id = TRL_HDR_ID;
+  TRL.loghdr.num = TRL.loghdr.next = -1;
+  TRL.loghdr.date = TRL.loghdr.time = 0;
+  for (i=0; i<MAXTRK; i++) {
+    trkhdr = &(TRL.loghdr.trkhdr[i]);
+    trkhdr->totalpt = 0;
+    trkhdr->next = 0;
+    memset(trkhdr->name, 0, TRK_NAME_LEN);
+    memset(trkhdr->comment, ' ', TRK_COMMENT_LEN);
+    trkhdr->comment[TRK_COMMENT_LEN-1] = '\0';
+    trkhdr->occupied = TRK_UNUSED;
+    trkhdr->show = TRK_HIDE;
+    trkhdr->fill = TRK_FILL;
+  }
+  memset(TRL.trklog, 0xff, sizeof(struct trklog) * MAXTRK);
+
+  track_disp_all(trl_track_hdr, trl_track_tlr, trl_track_wpt);
+
+  trl_swap(&TRL);
+  
+  fill =  0x10000 - 2 * sizeof(struct trklog);
+  buf = xmalloc(fill);
+  if (buf == NULL)
+    fatal(MYNAME ": Not enough memory\n");
+  memset(buf, 0xff, fill);
+
+  for (i=0; i<MAXTRK; i+=2) {
+    if (gbfwrite(&(TRL.trklog[i]), sizeof(struct trklog), 2, fout) != 2 ||
+       gbfwrite(buf, fill, 1, fout) != 1 )
+      fatal(MYNAME ": Write error on %s\n", fout->name);
+  }
+  xfree(buf);
+
+  fill = 0x1000 - sizeof(struct loghdr);
+  buf = xmalloc(fill);
+  if (buf == NULL)
+    fatal(MYNAME ": Not enough memory\n");
+  memset(buf, 0xff, fill);
+
+  if ( gbfwrite(&(TRL.loghdr), sizeof(struct loghdr), 1, fout) != 1 ||
+       gbfwrite(buf, fill, 1, fout) != 1 ) 
+    fatal(MYNAME ": Write error on %s\n", fout->name);
+  xfree(buf);
+}
+
+/**************************************************************************/
+
+static void alan_rd_init(const char *fname) {
+  fin = gbfopen(fname, "r", MYNAME);
+}
+
+static void alan_rd_deinit(void) {
+  gbfclose(fin);
+  fin = NULL;
+}
+
+
+static void alan_wr_init(const char *fname) {
+  fout = gbfopen(fname, "w", MYNAME);
+}
+
+static void alan_wr_deinit(void) {
+  gbfclose(fout);
+  fout = NULL;
+}
+
+
+static void alan_exit(void) {
+  return;
+}
+
+/**************************************************************************/
+
+ff_vecs_t alanwpr_vecs = {
+       ff_type_file,
+       { 
+         ff_cap_read | ff_cap_write    /* waypoints */,
+         ff_cap_none                   /* tracks */,
+         ff_cap_read | ff_cap_write    /* routes */
+       },
+       alan_rd_init,   
+       alan_wr_init,   
+       alan_rd_deinit, 
+       alan_wr_deinit, 
+       wpr_read,
+       wpr_write,
+       alan_exit,
+       wpr_args,
+       CET_CHARSET_ASCII, 0 /* ascii is the expected character set */
+                             /* not fixed, can be changed through command
+                               line parameter */
+};
+
+ff_vecs_t alantrl_vecs = {
+       ff_type_file,
+       { 
+         ff_cap_none                   /* waypoints */,
+         ff_cap_read | ff_cap_write    /* tracks */,
+         ff_cap_none                   /* routes */
+       },
+       alan_rd_init,   
+       alan_wr_init,   
+       alan_rd_deinit, 
+       alan_wr_deinit, 
+       trl_read,
+       trl_write,
+       alan_exit,
+       trl_args,
+       CET_CHARSET_ASCII, 0 /* ascii is the expected character set */
+                             /* not fixed, can be changed through command
+                               line parameter */
+};
diff --git a/reference/alantrl.gpx b/reference/alantrl.gpx
new file mode 100644 (file)
index 0000000..22d337e
--- /dev/null
@@ -0,0 +1,2447 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx
+ version="1.0"
+creator="GPSBabel - http://www.gpsbabel.org"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xmlns="http://www.topografix.com/GPX/1/0"
+xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
+<bounds minlat="28.649722222" minlon="-17.973583333" maxlat="28.706111111" maxlon="-17.926500000"/>
+<trk>
+  <name>FH-DRIVE</name>
+<trkseg>
+<trkpt lat="28.697833333" lon="-17.949000000">
+  <ele>-4542.400000</ele>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>654.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.949000000">
+  <ele>656.000000</ele>
+  <speed>0.527778</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.949000000">
+  <ele>657.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697805556" lon="-17.948972222">
+  <ele>658.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697805556" lon="-17.949000000">
+  <ele>658.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>661.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>659.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.949000000">
+  <ele>660.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>656.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>657.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.949000000">
+  <ele>656.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>655.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>658.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>657.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>656.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>659.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697805556" lon="-17.949000000">
+  <ele>658.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697805556" lon="-17.949000000">
+  <ele>660.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697805556" lon="-17.949000000">
+  <ele>661.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.949000000">
+  <ele>660.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.949000000">
+  <ele>657.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>656.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>657.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.948972222">
+  <ele>656.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697805556" lon="-17.949000000">
+  <ele>656.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697805556" lon="-17.948972222">
+  <ele>658.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697805556" lon="-17.949000000">
+  <ele>657.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697833333" lon="-17.949027778">
+  <ele>661.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697805556" lon="-17.949138889">
+  <ele>659.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697750000" lon="-17.949333333">
+  <ele>654.800000</ele>
+  <speed>2.000000</speed>
+</trkpt>
+<trkpt lat="28.697750000" lon="-17.949555556">
+  <ele>650.200000</ele>
+  <speed>2.388889</speed>
+</trkpt>
+<trkpt lat="28.697638889" lon="-17.949527778">
+  <ele>645.800000</ele>
+  <speed>1.888889</speed>
+</trkpt>
+<trkpt lat="28.697444444" lon="-17.949305556">
+  <ele>642.600000</ele>
+  <speed>2.861111</speed>
+</trkpt>
+<trkpt lat="28.697138889" lon="-17.949138889">
+  <ele>645.000000</ele>
+  <speed>3.194444</speed>
+</trkpt>
+<trkpt lat="28.696805556" lon="-17.948972222">
+  <ele>647.400000</ele>
+  <speed>4.083333</speed>
+</trkpt>
+<trkpt lat="28.696527778" lon="-17.949027778">
+  <ele>647.800000</ele>
+  <speed>3.805556</speed>
+</trkpt>
+<trkpt lat="28.696277778" lon="-17.949222222">
+  <ele>646.600000</ele>
+  <speed>2.833333</speed>
+</trkpt>
+<trkpt lat="28.696333333" lon="-17.949444444">
+  <ele>642.200000</ele>
+  <speed>3.055556</speed>
+</trkpt>
+<trkpt lat="28.696611111" lon="-17.949500000">
+  <ele>637.800000</ele>
+  <speed>2.722222</speed>
+</trkpt>
+<trkpt lat="28.696805556" lon="-17.949638889">
+  <ele>631.000000</ele>
+  <speed>2.944444</speed>
+</trkpt>
+<trkpt lat="28.696750000" lon="-17.950000000">
+  <ele>625.000000</ele>
+  <speed>2.666667</speed>
+</trkpt>
+<trkpt lat="28.696750000" lon="-17.950194444">
+  <ele>621.800000</ele>
+  <speed>3.333333</speed>
+</trkpt>
+<trkpt lat="28.696750000" lon="-17.950194444">
+  <ele>618.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.696750000" lon="-17.950194444">
+  <ele>615.600000</ele>
+  <speed>0.888889</speed>
+</trkpt>
+</trkseg>
+</trk>
+<trk>
+  <name>30-12-05</name>
+  <desc>PIRATENBUCH</desc>
+<number>1</number>
+<trkseg>
+<trkpt lat="28.697861111" lon="-17.949583333">
+  <ele>-4542.400000</ele>
+</trkpt>
+<trkpt lat="28.697944444" lon="-17.949555556">
+  <ele>653.000000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.698027778" lon="-17.949555556">
+  <ele>651.000000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.698083333" lon="-17.949527778">
+  <ele>654.200000</ele>
+  <speed>1.138889</speed>
+</trkpt>
+<trkpt lat="28.698111111" lon="-17.949527778">
+  <ele>650.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.698111111" lon="-17.949527778">
+  <ele>648.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.698138889" lon="-17.949527778">
+  <ele>651.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.698250000" lon="-17.949555556">
+  <ele>649.800000</ele>
+  <speed>0.861111</speed>
+</trkpt>
+<trkpt lat="28.698333333" lon="-17.949638889">
+  <ele>644.400000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.698416667" lon="-17.949694444">
+  <ele>645.000000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.698500000" lon="-17.949694444">
+  <ele>647.000000</ele>
+  <speed>0.972222</speed>
+</trkpt>
+<trkpt lat="28.698611111" lon="-17.949666667">
+  <ele>645.600000</ele>
+  <speed>0.805556</speed>
+</trkpt>
+<trkpt lat="28.698694444" lon="-17.949694444">
+  <ele>643.400000</ele>
+  <speed>1.138889</speed>
+</trkpt>
+<trkpt lat="28.698777778" lon="-17.949722222">
+  <ele>639.800000</ele>
+  <speed>0.861111</speed>
+</trkpt>
+<trkpt lat="28.698861111" lon="-17.949750000">
+  <ele>639.600000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.698861111" lon="-17.949777778">
+  <ele>640.400000</ele>
+  <speed>0.666667</speed>
+</trkpt>
+<trkpt lat="28.698888889" lon="-17.949805556">
+  <ele>647.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.698944444" lon="-17.949777778">
+  <ele>649.400000</ele>
+  <speed>0.722222</speed>
+</trkpt>
+<trkpt lat="28.699027778" lon="-17.949722222">
+  <ele>648.800000</ele>
+  <speed>1.722222</speed>
+</trkpt>
+<trkpt lat="28.699083333" lon="-17.949666667">
+  <ele>646.200000</ele>
+  <speed>0.722222</speed>
+</trkpt>
+<trkpt lat="28.699083333" lon="-17.949694444">
+  <ele>642.800000</ele>
+  <speed>0.555556</speed>
+</trkpt>
+<trkpt lat="28.699111111" lon="-17.949666667">
+  <ele>639.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699166667" lon="-17.949611111">
+  <ele>635.400000</ele>
+  <speed>0.777778</speed>
+</trkpt>
+<trkpt lat="28.699194444" lon="-17.949527778">
+  <ele>631.400000</ele>
+  <speed>0.972222</speed>
+</trkpt>
+<trkpt lat="28.699250000" lon="-17.949416667">
+  <ele>625.400000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.699277778" lon="-17.949361111">
+  <ele>623.600000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.699277778" lon="-17.949361111">
+  <ele>624.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699305556" lon="-17.949361111">
+  <ele>624.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699277778" lon="-17.949361111">
+  <ele>625.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699333333" lon="-17.949305556">
+  <ele>625.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699333333" lon="-17.949361111">
+  <ele>623.800000</ele>
+  <speed>0.694444</speed>
+</trkpt>
+<trkpt lat="28.699305556" lon="-17.949500000">
+  <ele>626.000000</ele>
+  <speed>1.027778</speed>
+</trkpt>
+<trkpt lat="28.699361111" lon="-17.949638889">
+  <ele>625.800000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.699416667" lon="-17.949750000">
+  <ele>629.000000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.699416667" lon="-17.949777778">
+  <ele>628.200000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.699444444" lon="-17.949916667">
+  <ele>626.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699444444" lon="-17.949972222">
+  <ele>625.800000</ele>
+  <speed>0.777778</speed>
+</trkpt>
+<trkpt lat="28.699500000" lon="-17.950027778">
+  <ele>624.800000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.699555556" lon="-17.950138889">
+  <ele>622.600000</ele>
+  <speed>0.555556</speed>
+</trkpt>
+<trkpt lat="28.699583333" lon="-17.950166667">
+  <ele>621.400000</ele>
+  <speed>0.694444</speed>
+</trkpt>
+<trkpt lat="28.699666667" lon="-17.950222222">
+  <ele>623.200000</ele>
+  <speed>0.666667</speed>
+</trkpt>
+<trkpt lat="28.699722222" lon="-17.950250000">
+  <ele>623.000000</ele>
+  <speed>0.916667</speed>
+</trkpt>
+<trkpt lat="28.699833333" lon="-17.950250000">
+  <ele>621.200000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.699916667" lon="-17.950277778">
+  <ele>619.400000</ele>
+  <speed>0.944444</speed>
+</trkpt>
+<trkpt lat="28.699972222" lon="-17.950250000">
+  <ele>621.000000</ele>
+  <speed>0.694444</speed>
+</trkpt>
+<trkpt lat="28.699944444" lon="-17.950277778">
+  <ele>621.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699972222" lon="-17.950444444">
+  <ele>622.200000</ele>
+  <speed>1.583333</speed>
+</trkpt>
+<trkpt lat="28.700027778" lon="-17.950527778">
+  <ele>622.200000</ele>
+  <speed>1.583333</speed>
+</trkpt>
+<trkpt lat="28.700111111" lon="-17.950444444">
+  <ele>625.400000</ele>
+  <speed>0.722222</speed>
+</trkpt>
+<trkpt lat="28.700138889" lon="-17.950388889">
+  <ele>618.400000</ele>
+  <speed>0.638889</speed>
+</trkpt>
+<trkpt lat="28.700222222" lon="-17.950333333">
+  <ele>617.200000</ele>
+  <speed>0.777778</speed>
+</trkpt>
+<trkpt lat="28.700305556" lon="-17.950277778">
+  <ele>615.200000</ele>
+  <speed>0.888889</speed>
+</trkpt>
+<trkpt lat="28.700388889" lon="-17.950250000">
+  <ele>616.200000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.700444444" lon="-17.950250000">
+  <ele>616.000000</ele>
+  <speed>0.777778</speed>
+</trkpt>
+<trkpt lat="28.700527778" lon="-17.950222222">
+  <ele>613.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700611111" lon="-17.950111111">
+  <ele>609.200000</ele>
+  <speed>0.944444</speed>
+</trkpt>
+<trkpt lat="28.700666667" lon="-17.950083333">
+  <ele>607.600000</ele>
+  <speed>1.277778</speed>
+</trkpt>
+<trkpt lat="28.700722222" lon="-17.950138889">
+  <ele>604.800000</ele>
+  <speed>0.805556</speed>
+</trkpt>
+<trkpt lat="28.700750000" lon="-17.950166667">
+  <ele>606.400000</ele>
+  <speed>1.000000</speed>
+</trkpt>
+<trkpt lat="28.700722222" lon="-17.950250000">
+  <ele>609.600000</ele>
+  <speed>0.833333</speed>
+</trkpt>
+<trkpt lat="28.700722222" lon="-17.950333333">
+  <ele>614.200000</ele>
+  <speed>0.750000</speed>
+</trkpt>
+<trkpt lat="28.700666667" lon="-17.950444444">
+  <ele>618.800000</ele>
+  <speed>1.000000</speed>
+</trkpt>
+<trkpt lat="28.700638889" lon="-17.950527778">
+  <ele>619.400000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.700638889" lon="-17.950583333">
+  <ele>621.800000</ele>
+  <speed>1.138889</speed>
+</trkpt>
+<trkpt lat="28.700611111" lon="-17.950583333">
+  <ele>623.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700583333" lon="-17.950694444">
+  <ele>625.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700583333" lon="-17.950750000">
+  <ele>629.600000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.700638889" lon="-17.950805556">
+  <ele>628.600000</ele>
+  <speed>0.555556</speed>
+</trkpt>
+<trkpt lat="28.700666667" lon="-17.950833333">
+  <ele>624.200000</ele>
+  <speed>0.916667</speed>
+</trkpt>
+<trkpt lat="28.700694444" lon="-17.950861111">
+  <ele>625.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700694444" lon="-17.950833333">
+  <ele>623.800000</ele>
+  <speed>0.583333</speed>
+</trkpt>
+<trkpt lat="28.700694444" lon="-17.950805556">
+  <ele>607.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700722222" lon="-17.950861111">
+  <ele>597.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700722222" lon="-17.950944444">
+  <ele>613.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700777778" lon="-17.951000000">
+  <ele>621.400000</ele>
+  <speed>0.777778</speed>
+</trkpt>
+<trkpt lat="28.700750000" lon="-17.951083333">
+  <ele>618.600000</ele>
+  <speed>0.861111</speed>
+</trkpt>
+<trkpt lat="28.700805556" lon="-17.951166667">
+  <ele>618.200000</ele>
+  <speed>0.805556</speed>
+</trkpt>
+<trkpt lat="28.700833333" lon="-17.951166667">
+  <ele>615.800000</ele>
+  <speed>0.638889</speed>
+</trkpt>
+<trkpt lat="28.700861111" lon="-17.951194444">
+  <ele>615.600000</ele>
+  <speed>0.833333</speed>
+</trkpt>
+<trkpt lat="28.700861111" lon="-17.951138889">
+  <ele>614.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700861111" lon="-17.951138889">
+  <ele>623.000000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.700861111" lon="-17.951138889">
+  <ele>630.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700861111" lon="-17.951111111">
+  <ele>626.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700861111" lon="-17.951111111">
+  <ele>624.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700916667" lon="-17.951111111">
+  <ele>627.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701027778" lon="-17.951138889">
+  <ele>627.000000</ele>
+  <speed>1.027778</speed>
+</trkpt>
+<trkpt lat="28.701111111" lon="-17.951166667">
+  <ele>625.200000</ele>
+  <speed>1.083333</speed>
+</trkpt>
+<trkpt lat="28.701138889" lon="-17.951166667">
+  <ele>624.400000</ele>
+  <speed>0.972222</speed>
+</trkpt>
+<trkpt lat="28.701138889" lon="-17.951166667">
+  <ele>624.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701111111" lon="-17.951166667">
+  <ele>623.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701111111" lon="-17.951166667">
+  <ele>621.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701111111" lon="-17.951138889">
+  <ele>618.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701111111" lon="-17.951138889">
+  <ele>614.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701194444" lon="-17.951111111">
+  <ele>618.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701305556" lon="-17.951138889">
+  <ele>621.200000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.701444444" lon="-17.951222222">
+  <ele>624.000000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.701583333" lon="-17.951305556">
+  <ele>623.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701750000" lon="-17.951361111">
+  <ele>626.600000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.701916667" lon="-17.951416667">
+  <ele>627.600000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.702055556" lon="-17.951472222">
+  <ele>626.200000</ele>
+  <speed>0.916667</speed>
+</trkpt>
+<trkpt lat="28.702194444" lon="-17.951527778">
+  <ele>626.000000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.702305556" lon="-17.951583333">
+  <ele>628.800000</ele>
+  <speed>1.277778</speed>
+</trkpt>
+<trkpt lat="28.702416667" lon="-17.951611111">
+  <ele>629.200000</ele>
+  <speed>1.222222</speed>
+</trkpt>
+<trkpt lat="28.702555556" lon="-17.951611111">
+  <ele>629.200000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.702638889" lon="-17.951583333">
+  <ele>628.200000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.702694444" lon="-17.951555556">
+  <ele>627.400000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.702777778" lon="-17.951472222">
+  <ele>626.600000</ele>
+  <speed>0.750000</speed>
+</trkpt>
+<trkpt lat="28.702861111" lon="-17.951388889">
+  <ele>626.800000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.702944444" lon="-17.951277778">
+  <ele>626.600000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.703055556" lon="-17.951222222">
+  <ele>628.000000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.703166667" lon="-17.951222222">
+  <ele>629.600000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.703277778" lon="-17.951277778">
+  <ele>629.600000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.703361111" lon="-17.951388889">
+  <ele>629.400000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.703388889" lon="-17.951500000">
+  <ele>627.600000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.703416667" lon="-17.951638889">
+  <ele>627.200000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.703444444" lon="-17.951777778">
+  <ele>626.400000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.703472222" lon="-17.951916667">
+  <ele>625.600000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.703500000" lon="-17.951972222">
+  <ele>625.200000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.703500000" lon="-17.951916667">
+  <ele>621.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.703500000" lon="-17.951944444">
+  <ele>613.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.703527778" lon="-17.951972222">
+  <ele>618.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.703138889" lon="-17.952277778">
+  <ele>623.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.702888889" lon="-17.952722222">
+  <ele>619.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.702666667" lon="-17.953194444">
+  <ele>606.200000</ele>
+  <speed>1.444444</speed>
+</trkpt>
+<trkpt lat="28.702527778" lon="-17.953694444">
+  <ele>596.000000</ele>
+  <speed>1.277778</speed>
+</trkpt>
+<trkpt lat="28.702500000" lon="-17.954000000">
+  <ele>595.400000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.702166667" lon="-17.954361111">
+  <ele>596.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701861111" lon="-17.954750000">
+  <ele>591.200000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.701638889" lon="-17.955222222">
+  <ele>572.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701305556" lon="-17.955583333">
+  <ele>555.200000</ele>
+  <speed>0.611111</speed>
+</trkpt>
+<trkpt lat="28.701000000" lon="-17.955972222">
+  <ele>550.800000</ele>
+  <speed>0.861111</speed>
+</trkpt>
+<trkpt lat="28.700611111" lon="-17.956250000">
+  <ele>542.800000</ele>
+  <speed>0.805556</speed>
+</trkpt>
+<trkpt lat="28.700222222" lon="-17.956527778">
+  <ele>545.000000</ele>
+  <speed>0.777778</speed>
+</trkpt>
+<trkpt lat="28.699861111" lon="-17.956861111">
+  <ele>532.200000</ele>
+  <speed>0.694444</speed>
+</trkpt>
+<trkpt lat="28.699638889" lon="-17.957305556">
+  <ele>521.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699666667" lon="-17.957833333">
+  <ele>513.600000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.699777778" lon="-17.958333333">
+  <ele>504.800000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.700111111" lon="-17.958694444">
+  <ele>503.400000</ele>
+  <speed>1.555556</speed>
+</trkpt>
+<trkpt lat="28.700500000" lon="-17.958972222">
+  <ele>501.000000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.700777778" lon="-17.959388889">
+  <ele>501.000000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.700305556" lon="-17.959416667">
+  <ele>495.400000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.699916667" lon="-17.959694444">
+  <ele>487.000000</ele>
+  <speed>1.611111</speed>
+</trkpt>
+<trkpt lat="28.699611111" lon="-17.960083333">
+  <ele>481.800000</ele>
+  <speed>1.472222</speed>
+</trkpt>
+<trkpt lat="28.699333333" lon="-17.960500000">
+  <ele>475.200000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.698861111" lon="-17.960500000">
+  <ele>475.200000</ele>
+  <speed>1.222222</speed>
+</trkpt>
+<trkpt lat="28.698500000" lon="-17.960805556">
+  <ele>467.800000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.698777778" lon="-17.961222222">
+  <ele>458.400000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.699222222" lon="-17.961361111">
+  <ele>457.000000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.699694444" lon="-17.961416667">
+  <ele>448.600000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.699638889" lon="-17.961944444">
+  <ele>442.800000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.699527778" lon="-17.962444444">
+  <ele>433.400000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.699527778" lon="-17.962972222">
+  <ele>429.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699333333" lon="-17.963444444">
+  <ele>424.800000</ele>
+  <speed>1.138889</speed>
+</trkpt>
+<trkpt lat="28.698944444" lon="-17.963722222">
+  <ele>411.600000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.698527778" lon="-17.963944444">
+  <ele>404.000000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.698111111" lon="-17.963750000">
+  <ele>395.800000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.697694444" lon="-17.963500000">
+  <ele>390.400000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.697277778" lon="-17.963750000">
+  <ele>386.400000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.696888889" lon="-17.963472222">
+  <ele>385.400000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.696666667" lon="-17.963000000">
+  <ele>391.400000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.696555556" lon="-17.963500000">
+  <ele>377.800000</ele>
+  <speed>1.527778</speed>
+</trkpt>
+<trkpt lat="28.696583333" lon="-17.964027778">
+  <ele>370.600000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.696833333" lon="-17.964472222">
+  <ele>371.000000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.697027778" lon="-17.964944444">
+  <ele>363.800000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.697333333" lon="-17.965333333">
+  <ele>356.200000</ele>
+  <speed>1.444444</speed>
+</trkpt>
+<trkpt lat="28.697694444" lon="-17.965694444">
+  <ele>349.000000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.698027778" lon="-17.966055556">
+  <ele>344.800000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.698111111" lon="-17.966583333">
+  <ele>341.800000</ele>
+  <speed>0.777778</speed>
+</trkpt>
+<trkpt lat="28.698166667" lon="-17.967111111">
+  <ele>336.000000</ele>
+  <speed>0.916667</speed>
+</trkpt>
+<trkpt lat="28.698361111" lon="-17.967583333">
+  <ele>320.600000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.698500000" lon="-17.968083333">
+  <ele>310.800000</ele>
+  <speed>1.083333</speed>
+</trkpt>
+<trkpt lat="28.698583333" lon="-17.968611111">
+  <ele>299.200000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.698694444" lon="-17.968666667">
+  <ele>290.400000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.698694444" lon="-17.968666667">
+  <ele>284.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.698694444" lon="-17.968666667">
+  <ele>283.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.698694444" lon="-17.968666667">
+  <ele>283.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.698722222" lon="-17.968666667">
+  <ele>281.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.698722222" lon="-17.968666667">
+  <ele>276.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.698750000" lon="-17.968722222">
+  <ele>277.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.698777778" lon="-17.968194444">
+  <ele>292.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699027778" lon="-17.967750000">
+  <ele>278.600000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.699138889" lon="-17.967805556">
+  <ele>270.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699194444" lon="-17.968166667">
+  <ele>252.200000</ele>
+  <speed>0.805556</speed>
+</trkpt>
+<trkpt lat="28.699416667" lon="-17.967833333">
+  <ele>246.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699555556" lon="-17.967805556">
+  <ele>223.400000</ele>
+  <speed>0.916667</speed>
+</trkpt>
+<trkpt lat="28.699638889" lon="-17.967972222">
+  <ele>209.200000</ele>
+  <speed>0.555556</speed>
+</trkpt>
+<trkpt lat="28.699555556" lon="-17.968333333">
+  <ele>177.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699722222" lon="-17.968277778">
+  <ele>193.800000</ele>
+  <speed>0.638889</speed>
+</trkpt>
+<trkpt lat="28.699777778" lon="-17.968250000">
+  <ele>181.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699805556" lon="-17.968305556">
+  <ele>175.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699805556" lon="-17.968555556">
+  <ele>179.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699916667" lon="-17.968805556">
+  <ele>168.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699916667" lon="-17.969083333">
+  <ele>155.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699861111" lon="-17.969277778">
+  <ele>124.800000</ele>
+  <speed>0.694444</speed>
+</trkpt>
+<trkpt lat="28.699388889" lon="-17.969222222">
+  <ele>126.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699861111" lon="-17.969277778">
+  <ele>123.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700361111" lon="-17.969305556">
+  <ele>125.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699972222" lon="-17.969388889">
+  <ele>90.800000</ele>
+  <speed>1.000000</speed>
+</trkpt>
+<trkpt lat="28.699750000" lon="-17.969583333">
+  <ele>101.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699833333" lon="-17.969916667">
+  <ele>109.600000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.700055556" lon="-17.970027778">
+  <ele>73.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700083333" lon="-17.970388889">
+  <ele>66.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700250000" lon="-17.970194444">
+  <ele>56.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700472222" lon="-17.970194444">
+  <ele>44.800000</ele>
+  <speed>0.888889</speed>
+</trkpt>
+<trkpt lat="28.700722222" lon="-17.970638889">
+  <ele>44.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700083333" lon="-17.971250000">
+  <ele>22.800000</ele>
+  <speed>1.638889</speed>
+</trkpt>
+<trkpt lat="28.700555556" lon="-17.971194444">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700027778" lon="-17.971277778">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700583333" lon="-17.971333333">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701166667" lon="-17.971194444">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700722222" lon="-17.971055556">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700361111" lon="-17.971388889">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700500000" lon="-17.971416667">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700472222" lon="-17.971333333">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700583333" lon="-17.971333333">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700500000" lon="-17.971416667">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700444444" lon="-17.971361111">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700444444" lon="-17.971416667">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700555556" lon="-17.971361111">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700416667" lon="-17.971333333">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700583333" lon="-17.971305556">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700250000" lon="-17.971722222">
+  <ele>24.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700416667" lon="-17.971444444">
+  <ele>117.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700555556" lon="-17.971250000">
+  <ele>54.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700472222" lon="-17.970500000">
+  <ele>41.000000</ele>
+  <speed>0.916667</speed>
+</trkpt>
+<trkpt lat="28.700527778" lon="-17.969972222">
+  <ele>45.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700638889" lon="-17.970027778">
+  <ele>40.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700666667" lon="-17.970555556">
+  <ele>45.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700944444" lon="-17.970777778">
+  <ele>43.400000</ele>
+  <speed>0.916667</speed>
+</trkpt>
+<trkpt lat="28.701333333" lon="-17.970750000">
+  <ele>49.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701388889" lon="-17.970333333">
+  <ele>69.800000</ele>
+  <speed>0.750000</speed>
+</trkpt>
+<trkpt lat="28.701611111" lon="-17.970416667">
+  <ele>101.800000</ele>
+  <speed>0.694444</speed>
+</trkpt>
+<trkpt lat="28.701750000" lon="-17.970472222">
+  <ele>115.200000</ele>
+  <speed>0.694444</speed>
+</trkpt>
+<trkpt lat="28.701916667" lon="-17.970111111">
+  <ele>125.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.702083333" lon="-17.970472222">
+  <ele>148.800000</ele>
+  <speed>0.555556</speed>
+</trkpt>
+<trkpt lat="28.702250000" lon="-17.970666667">
+  <ele>164.800000</ele>
+  <speed>0.722222</speed>
+</trkpt>
+<trkpt lat="28.702277778" lon="-17.970805556">
+  <ele>177.000000</ele>
+  <speed>0.888889</speed>
+</trkpt>
+<trkpt lat="28.702000000" lon="-17.971222222">
+  <ele>173.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.702444444" lon="-17.971305556">
+  <ele>166.200000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.702861111" lon="-17.971500000">
+  <ele>144.400000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.702388889" lon="-17.971555556">
+  <ele>130.000000</ele>
+  <speed>1.222222</speed>
+</trkpt>
+<trkpt lat="28.702583333" lon="-17.972055556">
+  <ele>131.600000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.703027778" lon="-17.972194444">
+  <ele>112.600000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.703055556" lon="-17.972444444">
+  <ele>101.200000</ele>
+  <speed>0.638889</speed>
+</trkpt>
+<trkpt lat="28.702750000" lon="-17.972833333">
+  <ele>90.200000</ele>
+  <speed>0.805556</speed>
+</trkpt>
+<trkpt lat="28.702750000" lon="-17.973361111">
+  <ele>72.600000</ele>
+  <speed>0.805556</speed>
+</trkpt>
+<trkpt lat="28.702666667" lon="-17.973583333">
+  <ele>59.400000</ele>
+  <speed>1.138889</speed>
+</trkpt>
+<trkpt lat="28.703027778" lon="-17.973583333">
+  <ele>41.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.703277778" lon="-17.973138889">
+  <ele>14.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.703694444" lon="-17.972861111">
+  <ele>8.800000</ele>
+  <speed>2.305556</speed>
+</trkpt>
+</trkseg>
+</trk>
+<trk>
+  <name>1-1-06</name>
+  <desc>TORRE TIME</desc>
+<number>2</number>
+<trkseg>
+<trkpt lat="28.697944444" lon="-17.949222222">
+  <ele>-4542.400000</ele>
+</trkpt>
+<trkpt lat="28.697916667" lon="-17.949250000">
+  <ele>653.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697944444" lon="-17.949250000">
+  <ele>657.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697944444" lon="-17.949222222">
+  <ele>654.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.697750000" lon="-17.949500000">
+  <ele>653.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.698194444" lon="-17.949638889">
+  <ele>647.400000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.698638889" lon="-17.949750000">
+  <ele>646.400000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.699111111" lon="-17.949750000">
+  <ele>643.400000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.699361111" lon="-17.949277778">
+  <ele>636.800000</ele>
+  <speed>0.833333</speed>
+</trkpt>
+<trkpt lat="28.699444444" lon="-17.949805556">
+  <ele>621.800000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.699722222" lon="-17.950222222">
+  <ele>619.800000</ele>
+  <speed>1.444444</speed>
+</trkpt>
+<trkpt lat="28.700138889" lon="-17.950416667">
+  <ele>618.800000</ele>
+  <speed>0.638889</speed>
+</trkpt>
+<trkpt lat="28.700527778" lon="-17.950138889">
+  <ele>618.600000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.700611111" lon="-17.950666667">
+  <ele>615.200000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.700805556" lon="-17.951138889">
+  <ele>615.000000</ele>
+  <speed>0.722222</speed>
+</trkpt>
+<trkpt lat="28.701277778" lon="-17.951111111">
+  <ele>624.000000</ele>
+  <speed>0.611111</speed>
+</trkpt>
+<trkpt lat="28.701027778" lon="-17.950694444">
+  <ele>623.400000</ele>
+  <speed>0.861111</speed>
+</trkpt>
+<trkpt lat="28.701250000" lon="-17.950222222">
+  <ele>640.000000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.701472222" lon="-17.949750000">
+  <ele>644.400000</ele>
+  <speed>0.944444</speed>
+</trkpt>
+<trkpt lat="28.701472222" lon="-17.949722222">
+  <ele>652.000000</ele>
+  <speed>0.833333</speed>
+</trkpt>
+<trkpt lat="28.701527778" lon="-17.949611111">
+  <ele>656.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701555556" lon="-17.949083333">
+  <ele>655.400000</ele>
+  <speed>0.805556</speed>
+</trkpt>
+<trkpt lat="28.702027778" lon="-17.949027778">
+  <ele>665.200000</ele>
+  <speed>0.888889</speed>
+</trkpt>
+<trkpt lat="28.701805556" lon="-17.948555556">
+  <ele>677.800000</ele>
+  <speed>1.138889</speed>
+</trkpt>
+<trkpt lat="28.702055556" lon="-17.948111111">
+  <ele>684.400000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.702305556" lon="-17.947638889">
+  <ele>692.200000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.702388889" lon="-17.947111111">
+  <ele>696.200000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.702583333" lon="-17.946611111">
+  <ele>701.600000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.702777778" lon="-17.946138889">
+  <ele>712.400000</ele>
+  <speed>1.027778</speed>
+</trkpt>
+<trkpt lat="28.703055556" lon="-17.945722222">
+  <ele>717.400000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.702583333" lon="-17.945666667">
+  <ele>718.400000</ele>
+  <speed>1.444444</speed>
+</trkpt>
+<trkpt lat="28.702166667" lon="-17.945861111">
+  <ele>725.800000</ele>
+  <speed>0.694444</speed>
+</trkpt>
+<trkpt lat="28.702000000" lon="-17.945750000">
+  <ele>752.000000</ele>
+  <speed>0.527778</speed>
+</trkpt>
+<trkpt lat="28.702472222" lon="-17.945722222">
+  <ele>745.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.702916667" lon="-17.945583333">
+  <ele>735.000000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.702805556" lon="-17.946083333">
+  <ele>727.600000</ele>
+  <speed>1.222222</speed>
+</trkpt>
+<trkpt lat="28.702666667" lon="-17.946583333">
+  <ele>726.400000</ele>
+  <speed>1.444444</speed>
+</trkpt>
+<trkpt lat="28.702972222" lon="-17.946194444">
+  <ele>710.600000</ele>
+  <speed>0.500000</speed>
+</trkpt>
+<trkpt lat="28.703250000" lon="-17.945777778">
+  <ele>727.400000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.703277778" lon="-17.945805556">
+  <ele>738.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.703277778" lon="-17.945777778">
+  <ele>735.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.703500000" lon="-17.945305556">
+  <ele>738.800000</ele>
+  <speed>1.027778</speed>
+</trkpt>
+<trkpt lat="28.703694444" lon="-17.944833333">
+  <ele>748.200000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.703944444" lon="-17.944388889">
+  <ele>754.800000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.704027778" lon="-17.943861111">
+  <ele>767.000000</ele>
+  <speed>0.972222</speed>
+</trkpt>
+<trkpt lat="28.704444444" lon="-17.943638889">
+  <ele>774.000000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.704750000" lon="-17.943722222">
+  <ele>780.600000</ele>
+  <speed>0.694444</speed>
+</trkpt>
+<trkpt lat="28.705111111" lon="-17.943583333">
+  <ele>802.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.705416667" lon="-17.943194444">
+  <ele>802.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.705694444" lon="-17.942777778">
+  <ele>814.200000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.706111111" lon="-17.942527778">
+  <ele>817.400000</ele>
+  <speed>1.000000</speed>
+</trkpt>
+<trkpt lat="28.705916667" lon="-17.942027778">
+  <ele>826.600000</ele>
+  <speed>0.833333</speed>
+</trkpt>
+<trkpt lat="28.705472222" lon="-17.942111111">
+  <ele>835.000000</ele>
+  <speed>1.277778</speed>
+</trkpt>
+<trkpt lat="28.705111111" lon="-17.942472222">
+  <ele>841.400000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.705055556" lon="-17.941944444">
+  <ele>846.200000</ele>
+  <speed>2.250000</speed>
+</trkpt>
+<trkpt lat="28.704972222" lon="-17.941416667">
+  <ele>855.600000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.704972222" lon="-17.940888889">
+  <ele>857.600000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.704916667" lon="-17.940361111">
+  <ele>862.800000</ele>
+  <speed>1.222222</speed>
+</trkpt>
+<trkpt lat="28.704916667" lon="-17.939833333">
+  <ele>871.000000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.705055556" lon="-17.939333333">
+  <ele>883.800000</ele>
+  <speed>0.916667</speed>
+</trkpt>
+<trkpt lat="28.705111111" lon="-17.938805556">
+  <ele>890.400000</ele>
+  <speed>0.722222</speed>
+</trkpt>
+<trkpt lat="28.705222222" lon="-17.938277778">
+  <ele>902.800000</ele>
+  <speed>0.944444</speed>
+</trkpt>
+<trkpt lat="28.705277778" lon="-17.937750000">
+  <ele>906.600000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.705333333" lon="-17.937222222">
+  <ele>918.600000</ele>
+  <speed>1.000000</speed>
+</trkpt>
+<trkpt lat="28.705527778" lon="-17.936750000">
+  <ele>928.200000</ele>
+  <speed>0.916667</speed>
+</trkpt>
+<trkpt lat="28.705444444" lon="-17.936222222">
+  <ele>942.800000</ele>
+  <speed>1.000000</speed>
+</trkpt>
+<trkpt lat="28.705500000" lon="-17.935694444">
+  <ele>947.800000</ele>
+  <speed>0.972222</speed>
+</trkpt>
+<trkpt lat="28.705527778" lon="-17.935166667">
+  <ele>955.200000</ele>
+  <speed>0.916667</speed>
+</trkpt>
+<trkpt lat="28.705666667" lon="-17.934666667">
+  <ele>970.800000</ele>
+  <speed>0.916667</speed>
+</trkpt>
+<trkpt lat="28.705694444" lon="-17.934138889">
+  <ele>981.800000</ele>
+  <speed>0.861111</speed>
+</trkpt>
+<trkpt lat="28.705722222" lon="-17.933611111">
+  <ele>988.800000</ele>
+  <speed>0.944444</speed>
+</trkpt>
+<trkpt lat="28.705694444" lon="-17.933083333">
+  <ele>1001.400000</ele>
+  <speed>1.527778</speed>
+</trkpt>
+<trkpt lat="28.705444444" lon="-17.932638889">
+  <ele>1009.600000</ele>
+  <speed>1.083333</speed>
+</trkpt>
+<trkpt lat="28.705277778" lon="-17.932555556">
+  <ele>1013.200000</ele>
+  <speed>1.944444</speed>
+</trkpt>
+<trkpt lat="28.705027778" lon="-17.932111111">
+  <ele>1017.200000</ele>
+  <speed>0.638889</speed>
+</trkpt>
+<trkpt lat="28.704583333" lon="-17.931944444">
+  <ele>1010.600000</ele>
+  <speed>1.027778</speed>
+</trkpt>
+<trkpt lat="28.704527778" lon="-17.932472222">
+  <ele>1006.000000</ele>
+  <speed>1.472222</speed>
+</trkpt>
+<trkpt lat="28.704111111" lon="-17.932666667">
+  <ele>1006.000000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.703805556" lon="-17.933055556">
+  <ele>1009.200000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.703388889" lon="-17.933250000">
+  <ele>1002.400000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.703027778" lon="-17.933555556">
+  <ele>996.200000</ele>
+  <speed>0.583333</speed>
+</trkpt>
+<trkpt lat="28.702777778" lon="-17.933111111">
+  <ele>992.000000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.702583333" lon="-17.932611111">
+  <ele>978.400000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.702166667" lon="-17.932861111">
+  <ele>974.800000</ele>
+  <speed>1.666667</speed>
+</trkpt>
+<trkpt lat="28.701861111" lon="-17.933250000">
+  <ele>974.800000</ele>
+  <speed>0.944444</speed>
+</trkpt>
+<trkpt lat="28.701416667" lon="-17.933361111">
+  <ele>974.400000</ele>
+  <speed>1.277778</speed>
+</trkpt>
+<trkpt lat="28.700944444" lon="-17.933388889">
+  <ele>971.000000</ele>
+  <speed>1.527778</speed>
+</trkpt>
+<trkpt lat="28.700833333" lon="-17.933305556">
+  <ele>969.400000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.700833333" lon="-17.933305556">
+  <ele>966.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700833333" lon="-17.933333333">
+  <ele>971.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700722222" lon="-17.933166667">
+  <ele>967.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700638889" lon="-17.932638889">
+  <ele>964.800000</ele>
+  <speed>0.666667</speed>
+</trkpt>
+<trkpt lat="28.700666667" lon="-17.931805556">
+  <ele>952.800000</ele>
+  <speed>1.222222</speed>
+</trkpt>
+<trkpt lat="28.700555556" lon="-17.932861111">
+  <ele>1045.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700416667" lon="-17.933916667">
+  <ele>952.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700527778" lon="-17.933222222">
+  <ele>829.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700805556" lon="-17.932250000">
+  <ele>892.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700611111" lon="-17.933000000">
+  <ele>1031.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700500000" lon="-17.933555556">
+  <ele>938.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700611111" lon="-17.932833333">
+  <ele>868.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700805556" lon="-17.931888889">
+  <ele>955.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700638889" lon="-17.932722222">
+  <ele>1050.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700833333" lon="-17.931972222">
+  <ele>948.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700722222" lon="-17.932694444">
+  <ele>1025.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701416667" lon="-17.932055556">
+  <ele>957.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700805556" lon="-17.932583333">
+  <ele>952.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700388889" lon="-17.932333333">
+  <ele>942.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699972222" lon="-17.932111111">
+  <ele>943.800000</ele>
+  <speed>1.083333</speed>
+</trkpt>
+<trkpt lat="28.698750000" lon="-17.932194444">
+  <ele>938.800000</ele>
+  <speed>1.472222</speed>
+</trkpt>
+<trkpt lat="28.698388889" lon="-17.931861111">
+  <ele>939.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.698194444" lon="-17.932333333">
+  <ele>945.000000</ele>
+  <speed>1.805556</speed>
+</trkpt>
+<trkpt lat="28.697861111" lon="-17.932694444">
+  <ele>950.000000</ele>
+  <speed>0.777778</speed>
+</trkpt>
+<trkpt lat="28.697388889" lon="-17.932666667">
+  <ele>961.200000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.696916667" lon="-17.932666667">
+  <ele>968.800000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.696638889" lon="-17.932250000">
+  <ele>971.200000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.696444444" lon="-17.931777778">
+  <ele>967.400000</ele>
+  <speed>0.972222</speed>
+</trkpt>
+<trkpt lat="28.696138889" lon="-17.931388889">
+  <ele>966.600000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.696111111" lon="-17.930861111">
+  <ele>961.400000</ele>
+  <speed>0.722222</speed>
+</trkpt>
+<trkpt lat="28.696055556" lon="-17.930333333">
+  <ele>968.800000</ele>
+  <speed>0.750000</speed>
+</trkpt>
+<trkpt lat="28.695277778" lon="-17.931305556">
+  <ele>968.000000</ele>
+  <speed>0.638889</speed>
+</trkpt>
+<trkpt lat="28.696388889" lon="-17.931111111">
+  <ele>967.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.694972222" lon="-17.930861111">
+  <ele>967.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.694861111" lon="-17.930361111">
+  <ele>937.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.694694444" lon="-17.929861111">
+  <ele>1009.200000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.694166667" lon="-17.930305556">
+  <ele>1010.000000</ele>
+  <speed>0.888889</speed>
+</trkpt>
+<trkpt lat="28.693694444" lon="-17.930277778">
+  <ele>1009.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.693805556" lon="-17.929777778">
+  <ele>996.800000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.693444444" lon="-17.929444444">
+  <ele>1000.600000</ele>
+  <speed>1.444444</speed>
+</trkpt>
+<trkpt lat="28.693555556" lon="-17.928944444">
+  <ele>1013.000000</ele>
+  <speed>1.555556</speed>
+</trkpt>
+<trkpt lat="28.693500000" lon="-17.928416667">
+  <ele>1013.400000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.692805556" lon="-17.928000000">
+  <ele>1018.200000</ele>
+  <speed>0.555556</speed>
+</trkpt>
+<trkpt lat="28.692750000" lon="-17.927472222">
+  <ele>1017.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.692305556" lon="-17.927638889">
+  <ele>1029.000000</ele>
+  <speed>0.888889</speed>
+</trkpt>
+<trkpt lat="28.692250000" lon="-17.928166667">
+  <ele>1028.600000</ele>
+  <speed>0.638889</speed>
+</trkpt>
+<trkpt lat="28.691805556" lon="-17.928333333">
+  <ele>1028.600000</ele>
+  <speed>1.722222</speed>
+</trkpt>
+<trkpt lat="28.691444444" lon="-17.928638889">
+  <ele>1034.400000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.691305556" lon="-17.928138889">
+  <ele>1034.400000</ele>
+  <speed>1.583333</speed>
+</trkpt>
+<trkpt lat="28.690861111" lon="-17.928250000">
+  <ele>1034.200000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.690527778" lon="-17.927888889">
+  <ele>1037.000000</ele>
+  <speed>1.583333</speed>
+</trkpt>
+<trkpt lat="28.690055556" lon="-17.927916667">
+  <ele>1032.000000</ele>
+  <speed>1.527778</speed>
+</trkpt>
+<trkpt lat="28.689638889" lon="-17.927694444">
+  <ele>1024.800000</ele>
+  <speed>1.472222</speed>
+</trkpt>
+<trkpt lat="28.689277778" lon="-17.927333333">
+  <ele>1025.000000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.688833333" lon="-17.927194444">
+  <ele>1022.600000</ele>
+  <speed>1.000000</speed>
+</trkpt>
+<trkpt lat="28.688916667" lon="-17.926916667">
+  <ele>1023.000000</ele>
+  <speed>1.222222</speed>
+</trkpt>
+<trkpt lat="28.689277778" lon="-17.926611111">
+  <ele>1039.800000</ele>
+  <speed>0.833333</speed>
+</trkpt>
+<trkpt lat="28.689361111" lon="-17.926527778">
+  <ele>1056.600000</ele>
+  <speed>0.805556</speed>
+</trkpt>
+<trkpt lat="28.689388889" lon="-17.926500000">
+  <ele>1061.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.689333333" lon="-17.926527778">
+  <ele>1065.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.689361111" lon="-17.926527778">
+  <ele>1056.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.689333333" lon="-17.926527778">
+  <ele>1060.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.689361111" lon="-17.926527778">
+  <ele>1057.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.689194444" lon="-17.926638889">
+  <ele>1058.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.688861111" lon="-17.926944444">
+  <ele>1047.800000</ele>
+  <speed>0.666667</speed>
+</trkpt>
+<trkpt lat="28.688888889" lon="-17.927277778">
+  <ele>1045.200000</ele>
+  <speed>0.527778</speed>
+</trkpt>
+<trkpt lat="28.689333333" lon="-17.927361111">
+  <ele>1049.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.689694444" lon="-17.927666667">
+  <ele>1030.600000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.690111111" lon="-17.927916667">
+  <ele>1027.600000</ele>
+  <speed>1.638889</speed>
+</trkpt>
+<trkpt lat="28.690583333" lon="-17.927944444">
+  <ele>1033.800000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.690888889" lon="-17.928333333">
+  <ele>1035.600000</ele>
+  <speed>1.277778</speed>
+</trkpt>
+<trkpt lat="28.691305556" lon="-17.928111111">
+  <ele>1030.400000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.691722222" lon="-17.928305556">
+  <ele>1029.600000</ele>
+  <speed>0.861111</speed>
+</trkpt>
+<trkpt lat="28.692166667" lon="-17.928444444">
+  <ele>1029.400000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.692222222" lon="-17.927888889">
+  <ele>1029.600000</ele>
+  <speed>1.222222</speed>
+</trkpt>
+<trkpt lat="28.692583333" lon="-17.927555556">
+  <ele>1030.200000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.692888889" lon="-17.927972222">
+  <ele>1024.200000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.693222222" lon="-17.928333333">
+  <ele>1016.600000</ele>
+  <speed>1.138889</speed>
+</trkpt>
+<trkpt lat="28.693611111" lon="-17.928611111">
+  <ele>1016.600000</ele>
+  <speed>1.555556</speed>
+</trkpt>
+<trkpt lat="28.693500000" lon="-17.929111111">
+  <ele>1016.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.693777778" lon="-17.929527778">
+  <ele>1020.800000</ele>
+  <speed>0.805556</speed>
+</trkpt>
+<trkpt lat="28.693722222" lon="-17.930055556">
+  <ele>1019.400000</ele>
+  <speed>1.000000</speed>
+</trkpt>
+<trkpt lat="28.693972222" lon="-17.930527778">
+  <ele>1019.400000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.693444444" lon="-17.930444444">
+  <ele>1018.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.694222222" lon="-17.930388889">
+  <ele>1018.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.694583333" lon="-17.930055556">
+  <ele>1018.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.694861111" lon="-17.930472222">
+  <ele>1000.200000</ele>
+  <speed>1.527778</speed>
+</trkpt>
+<trkpt lat="28.695250000" lon="-17.930750000">
+  <ele>1004.000000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.695416667" lon="-17.931250000">
+  <ele>1005.600000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.695777778" lon="-17.930944444">
+  <ele>1004.800000</ele>
+  <speed>0.805556</speed>
+</trkpt>
+<trkpt lat="28.695972222" lon="-17.930444444">
+  <ele>987.400000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.696361111" lon="-17.930722222">
+  <ele>977.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.696250000" lon="-17.931555556">
+  <ele>977.600000</ele>
+  <speed>1.138889</speed>
+</trkpt>
+<trkpt lat="28.696611111" lon="-17.931888889">
+  <ele>962.400000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.696722222" lon="-17.932388889">
+  <ele>962.600000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.697027778" lon="-17.932777778">
+  <ele>962.600000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.697500000" lon="-17.932833333">
+  <ele>966.800000</ele>
+  <speed>1.555556</speed>
+</trkpt>
+<trkpt lat="28.697944444" lon="-17.932750000">
+  <ele>968.600000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.698277778" lon="-17.932388889">
+  <ele>962.200000</ele>
+  <speed>1.000000</speed>
+</trkpt>
+<trkpt lat="28.698472222" lon="-17.932055556">
+  <ele>954.400000</ele>
+  <speed>0.666667</speed>
+</trkpt>
+<trkpt lat="28.698722222" lon="-17.932222222">
+  <ele>941.200000</ele>
+  <speed>0.944444</speed>
+</trkpt>
+<trkpt lat="28.699111111" lon="-17.931944444">
+  <ele>946.000000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.699555556" lon="-17.931861111">
+  <ele>933.800000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.700000000" lon="-17.932055556">
+  <ele>933.600000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.700333333" lon="-17.932416667">
+  <ele>937.600000</ele>
+  <speed>1.638889</speed>
+</trkpt>
+<trkpt lat="28.700888889" lon="-17.932416667">
+  <ele>930.800000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.700777778" lon="-17.932666667">
+  <ele>933.200000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700750000" lon="-17.932722222">
+  <ele>937.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700555556" lon="-17.933194444">
+  <ele>943.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700805556" lon="-17.933277778">
+  <ele>928.800000</ele>
+  <speed>0.611111</speed>
+</trkpt>
+<trkpt lat="28.700916667" lon="-17.933361111">
+  <ele>944.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700888889" lon="-17.933333333">
+  <ele>959.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700805556" lon="-17.933361111">
+  <ele>957.000000</ele>
+  <speed>0.638889</speed>
+</trkpt>
+<trkpt lat="28.701222222" lon="-17.933583333">
+  <ele>963.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.701666667" lon="-17.933416667">
+  <ele>967.800000</ele>
+  <speed>1.472222</speed>
+</trkpt>
+<trkpt lat="28.702083333" lon="-17.933222222">
+  <ele>961.400000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.702388889" lon="-17.932833333">
+  <ele>960.800000</ele>
+  <speed>1.527778</speed>
+</trkpt>
+<trkpt lat="28.702805556" lon="-17.933083333">
+  <ele>964.000000</ele>
+  <speed>1.472222</speed>
+</trkpt>
+<trkpt lat="28.702944444" lon="-17.933583333">
+  <ele>964.800000</ele>
+  <speed>0.944444</speed>
+</trkpt>
+<trkpt lat="28.703194444" lon="-17.934027778">
+  <ele>967.800000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.703472222" lon="-17.934444444">
+  <ele>975.400000</ele>
+  <speed>1.277778</speed>
+</trkpt>
+<trkpt lat="28.703833333" lon="-17.934138889">
+  <ele>971.000000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.703833333" lon="-17.934750000">
+  <ele>961.800000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.704027778" lon="-17.935222222">
+  <ele>958.400000</ele>
+  <speed>1.666667</speed>
+</trkpt>
+<trkpt lat="28.704111111" lon="-17.935750000">
+  <ele>952.800000</ele>
+  <speed>1.000000</speed>
+</trkpt>
+<trkpt lat="28.704361111" lon="-17.936194444">
+  <ele>945.400000</ele>
+  <speed>1.083333</speed>
+</trkpt>
+<trkpt lat="28.704777778" lon="-17.936388889">
+  <ele>940.800000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.704472222" lon="-17.936861111">
+  <ele>938.800000</ele>
+  <speed>1.555556</speed>
+</trkpt>
+<trkpt lat="28.704000000" lon="-17.936861111">
+  <ele>911.000000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.703833333" lon="-17.936361111">
+  <ele>918.800000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.703583333" lon="-17.936805556">
+  <ele>920.400000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.703305556" lon="-17.937222222">
+  <ele>914.800000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.702861111" lon="-17.937361111">
+  <ele>911.200000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.702500000" lon="-17.937694444">
+  <ele>900.200000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.702111111" lon="-17.937972222">
+  <ele>896.000000</ele>
+  <speed>1.472222</speed>
+</trkpt>
+<trkpt lat="28.701638889" lon="-17.937972222">
+  <ele>891.600000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.701194444" lon="-17.937861111">
+  <ele>884.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700888889" lon="-17.937472222">
+  <ele>882.200000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.701000000" lon="-17.936972222">
+  <ele>883.000000</ele>
+  <speed>1.472222</speed>
+</trkpt>
+<trkpt lat="28.700666667" lon="-17.936611111">
+  <ele>879.600000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.700194444" lon="-17.936694444">
+  <ele>880.000000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.699722222" lon="-17.936694444">
+  <ele>883.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699444444" lon="-17.937111111">
+  <ele>885.200000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.699000000" lon="-17.937194444">
+  <ele>870.200000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.698555556" lon="-17.937027778">
+  <ele>860.400000</ele>
+  <speed>1.472222</speed>
+</trkpt>
+<trkpt lat="28.698138889" lon="-17.937277778">
+  <ele>863.200000</ele>
+  <speed>1.277778</speed>
+</trkpt>
+<trkpt lat="28.698583333" lon="-17.937388889">
+  <ele>856.400000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.698777778" lon="-17.937861111">
+  <ele>843.400000</ele>
+  <speed>1.555556</speed>
+</trkpt>
+<trkpt lat="28.698944444" lon="-17.938361111">
+  <ele>839.000000</ele>
+  <speed>1.527778</speed>
+</trkpt>
+<trkpt lat="28.699388889" lon="-17.938277778">
+  <ele>833.200000</ele>
+  <speed>1.083333</speed>
+</trkpt>
+<trkpt lat="28.699750000" lon="-17.937944444">
+  <ele>828.600000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.699805556" lon="-17.938472222">
+  <ele>828.600000</ele>
+  <speed>1.611111</speed>
+</trkpt>
+<trkpt lat="28.699888889" lon="-17.939000000">
+  <ele>827.400000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.700000000" lon="-17.939500000">
+  <ele>820.600000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.700138889" lon="-17.940000000">
+  <ele>806.600000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.700111111" lon="-17.940527778">
+  <ele>810.800000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.699972222" lon="-17.941027778">
+  <ele>806.200000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.699916667" lon="-17.941555556">
+  <ele>805.000000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.700138889" lon="-17.942055556">
+  <ele>802.200000</ele>
+  <speed>1.138889</speed>
+</trkpt>
+<trkpt lat="28.700583333" lon="-17.942138889">
+  <ele>797.200000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.700833333" lon="-17.942583333">
+  <ele>793.600000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.700916667" lon="-17.943111111">
+  <ele>785.800000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.700750000" lon="-17.943611111">
+  <ele>777.400000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.700472222" lon="-17.944027778">
+  <ele>778.000000</ele>
+  <speed>1.305556</speed>
+</trkpt>
+<trkpt lat="28.700361111" lon="-17.944527778">
+  <ele>776.200000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.700333333" lon="-17.945055556">
+  <ele>780.200000</ele>
+  <speed>1.666667</speed>
+</trkpt>
+<trkpt lat="28.700444444" lon="-17.945555556">
+  <ele>785.400000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.700861111" lon="-17.945750000">
+  <ele>782.200000</ele>
+  <speed>1.472222</speed>
+</trkpt>
+<trkpt lat="28.701305556" lon="-17.945638889">
+  <ele>773.600000</ele>
+  <speed>1.444444</speed>
+</trkpt>
+<trkpt lat="28.701555556" lon="-17.945194444">
+  <ele>772.000000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.701888889" lon="-17.945555556">
+  <ele>777.800000</ele>
+  <speed>1.472222</speed>
+</trkpt>
+<trkpt lat="28.702250000" lon="-17.945861111">
+  <ele>759.600000</ele>
+  <speed>1.444444</speed>
+</trkpt>
+<trkpt lat="28.702666667" lon="-17.945666667">
+  <ele>753.600000</ele>
+  <speed>1.388889</speed>
+</trkpt>
+<trkpt lat="28.702750000" lon="-17.946194444">
+  <ele>754.800000</ele>
+  <speed>1.444444</speed>
+</trkpt>
+<trkpt lat="28.702527778" lon="-17.946666667">
+  <ele>742.600000</ele>
+  <speed>1.555556</speed>
+</trkpt>
+<trkpt lat="28.702333333" lon="-17.947138889">
+  <ele>735.800000</ele>
+  <speed>1.277778</speed>
+</trkpt>
+<trkpt lat="28.702250000" lon="-17.947666667">
+  <ele>727.000000</ele>
+  <speed>1.277778</speed>
+</trkpt>
+<trkpt lat="28.702000000" lon="-17.948111111">
+  <ele>722.600000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.701750000" lon="-17.948555556">
+  <ele>719.400000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.702083333" lon="-17.948916667">
+  <ele>710.400000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.701611111" lon="-17.948972222">
+  <ele>688.800000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.701500000" lon="-17.949472222">
+  <ele>677.400000</ele>
+  <speed>1.166667</speed>
+</trkpt>
+<trkpt lat="28.701361111" lon="-17.949972222">
+  <ele>671.600000</ele>
+  <speed>0.861111</speed>
+</trkpt>
+<trkpt lat="28.701111111" lon="-17.950416667">
+  <ele>664.200000</ele>
+  <speed>1.027778</speed>
+</trkpt>
+<trkpt lat="28.701138889" lon="-17.950944444">
+  <ele>655.200000</ele>
+  <speed>1.138889</speed>
+</trkpt>
+<trkpt lat="28.700777778" lon="-17.950944444">
+  <ele>648.600000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.700583333" lon="-17.950472222">
+  <ele>622.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.700138889" lon="-17.950305556">
+  <ele>615.600000</ele>
+  <speed>1.055556</speed>
+</trkpt>
+<trkpt lat="28.699750000" lon="-17.950027778">
+  <ele>620.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.699416667" lon="-17.949666667">
+  <ele>618.000000</ele>
+  <speed>1.555556</speed>
+</trkpt>
+<trkpt lat="28.698972222" lon="-17.949777778">
+  <ele>620.800000</ele>
+  <speed>1.277778</speed>
+</trkpt>
+<trkpt lat="28.698500000" lon="-17.949722222">
+  <ele>624.400000</ele>
+  <speed>1.083333</speed>
+</trkpt>
+<trkpt lat="28.698055556" lon="-17.949555556">
+  <ele>626.200000</ele>
+  <speed>0.972222</speed>
+</trkpt>
+<trkpt lat="28.697861111" lon="-17.949083333">
+  <ele>634.400000</ele>
+  <speed>1.000000</speed>
+</trkpt>
+</trkseg>
+</trk>
+<trk>
+  <name>2-1-06</name>
+  <desc>TAZACORTE</desc>
+<number>3</number>
+<trkseg>
+<trkpt lat="28.663388889" lon="-17.942472222">
+  <ele>-4542.400000</ele>
+</trkpt>
+<trkpt lat="28.663444444" lon="-17.942444444">
+  <ele>518.600000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.663444444" lon="-17.942444444">
+  <ele>525.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.663805556" lon="-17.942500000">
+  <ele>530.400000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.663527778" lon="-17.942916667">
+  <ele>530.800000</ele>
+  <speed>1.111111</speed>
+</trkpt>
+<trkpt lat="28.663055556" lon="-17.942916667">
+  <ele>507.000000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.662583333" lon="-17.942916667">
+  <ele>509.200000</ele>
+  <speed>1.361111</speed>
+</trkpt>
+<trkpt lat="28.662138889" lon="-17.943027778">
+  <ele>507.800000</ele>
+  <speed>2.638889</speed>
+</trkpt>
+<trkpt lat="28.661694444" lon="-17.943194444">
+  <ele>495.200000</ele>
+  <speed>1.083333</speed>
+</trkpt>
+<trkpt lat="28.661250000" lon="-17.943333333">
+  <ele>492.200000</ele>
+  <speed>1.333333</speed>
+</trkpt>
+<trkpt lat="28.660805556" lon="-17.943472222">
+  <ele>486.200000</ele>
+  <speed>1.194444</speed>
+</trkpt>
+<trkpt lat="28.660361111" lon="-17.943583333">
+  <ele>478.800000</ele>
+  <speed>1.638889</speed>
+</trkpt>
+<trkpt lat="28.659888889" lon="-17.943555556">
+  <ele>464.400000</ele>
+  <speed>0.944444</speed>
+</trkpt>
+<trkpt lat="28.659638889" lon="-17.943500000">
+  <ele>454.200000</ele>
+  <speed>1.027778</speed>
+</trkpt>
+<trkpt lat="28.659250000" lon="-17.943777778">
+  <ele>457.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.658861111" lon="-17.944055556">
+  <ele>432.400000</ele>
+  <speed>0.777778</speed>
+</trkpt>
+<trkpt lat="28.658472222" lon="-17.944333333">
+  <ele>415.000000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+<trkpt lat="28.658333333" lon="-17.944833333">
+  <ele>406.000000</ele>
+  <speed>1.250000</speed>
+</trkpt>
+<trkpt lat="28.658777778" lon="-17.945000000">
+  <ele>392.600000</ele>
+  <speed>1.083333</speed>
+</trkpt>
+<trkpt lat="28.658916667" lon="-17.945500000">
+  <ele>390.200000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.658555556" lon="-17.945833333">
+  <ele>377.000000</ele>
+  <speed>1.277778</speed>
+</trkpt>
+<trkpt lat="28.658194444" lon="-17.946194444">
+  <ele>368.800000</ele>
+  <speed>1.138889</speed>
+</trkpt>
+<trkpt lat="28.657916667" lon="-17.946611111">
+  <ele>351.400000</ele>
+  <speed>1.416667</speed>
+</trkpt>
+<trkpt lat="28.657611111" lon="-17.947000000">
+  <ele>341.000000</ele>
+  <speed>1.222222</speed>
+</trkpt>
+<trkpt lat="28.657194444" lon="-17.947194444">
+  <ele>331.400000</ele>
+  <speed>1.083333</speed>
+</trkpt>
+<trkpt lat="28.652027778" lon="-17.946500000">
+  <ele>328.000000</ele>
+  <speed>1.500000</speed>
+</trkpt>
+<trkpt lat="28.649722222" lon="-17.946305556">
+  <ele>327.800000</ele>
+  <speed>0.000000</speed>
+</trkpt>
+</trkseg>
+</trk>
+</gpx>
diff --git a/reference/alantrl.trl b/reference/alantrl.trl
new file mode 100644 (file)
index 0000000..c0f94ab
Binary files /dev/null and b/reference/alantrl.trl differ
diff --git a/reference/alanwpr.gpx b/reference/alanwpr.gpx
new file mode 100644 (file)
index 0000000..5649e54
--- /dev/null
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gpx
+ version="1.0"
+creator="GPSBabel - http://www.gpsbabel.org"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xmlns="http://www.topografix.com/GPX/1/0"
+xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
+<bounds minlat="28.455250000" minlon="-17.980111111" maxlat="47.650694444" maxlon="9.483111111"/>
+<wpt lat="47.650694444" lon="9.483111111">
+  <name>Home</name>
+  <cmt>Sweet_Home</cmt>
+  <desc>Sweet_Home</desc>
+</wpt>
+<wpt lat="28.620472222" lon="-17.752805556">
+  <name>Airport</name>
+  <cmt>Santa_Cruz</cmt>
+  <desc>Santa_Cruz</desc>
+</wpt>
+<wpt lat="28.830361111" lon="-17.803222222">
+  <name>GAS001</name>
+  <cmt>Barlovento</cmt>
+  <desc>Barlovento</desc>
+</wpt>
+<wpt lat="28.763444444" lon="-17.977722222">
+  <name>GAS002</name>
+  <cmt>Puntagorda</cmt>
+  <desc>Puntagorda</desc>
+</wpt>
+<wpt lat="28.766000000" lon="-17.980111111">
+  <name>Police</name>
+  <cmt>Puntagorda</cmt>
+  <desc>Puntagorda</desc>
+</wpt>
+<wpt lat="28.689583333" lon="-17.767472222">
+  <name>SMrkt01</name>
+  <cmt>Santa_Cruz</cmt>
+  <desc>Santa_Cruz</desc>
+</wpt>
+<wpt lat="28.651083333" lon="-17.881027778">
+  <name>SMrkt02</name>
+  <cmt>El_Paso</cmt>
+  <desc>El_Paso</desc>
+</wpt>
+<wpt lat="28.778305556" lon="-17.906250000">
+  <name>PARK01</name>
+  <cmt>SmallParking</cmt>
+  <desc>SmallParking</desc>
+</wpt>
+<wpt lat="28.791527778" lon="-17.799361111">
+  <name>PARK02</name>
+  <cmt>Tilos_Trail</cmt>
+  <desc>Tilos_Trail</desc>
+</wpt>
+<wpt lat="28.780388889" lon="-17.962944444">
+  <name>PARK03</name>
+  <cmt>Las_Tricia</cmt>
+  <desc>Las_Tricia</desc>
+</wpt>
+<wpt lat="28.811111111" lon="-17.805222222">
+  <name>Barloven</name>
+  <cmt>Barlovento</cmt>
+  <desc>Barlovento</desc>
+</wpt>
+<wpt lat="28.692500000" lon="-17.876888889">
+  <name>Bejenado</name>
+  <cmt>Bejenado</cmt>
+  <desc>Bejenado</desc>
+</wpt>
+<wpt lat="28.697916667" lon="-17.856750000">
+  <name>Cumbreci</name>
+  <cmt>Cumbrecita</cmt>
+  <desc>Cumbrecita</desc>
+</wpt>
+<wpt lat="28.578805556" lon="-17.838083333">
+  <name>Durazner</name>
+  <cmt>Duraznero</cmt>
+  <desc>Duraznero</desc>
+</wpt>
+<wpt lat="28.614916667" lon="-17.836777778">
+  <name>El_Pilar</name>
+  <cmt>El_Pilar</cmt>
+  <desc>El_Pilar</desc>
+</wpt>
+<wpt lat="28.689138889" lon="-17.870083333">
+  <name>El_Rodeo</name>
+  <cmt>El_Rodeo</cmt>
+  <desc>El_Rodeo</desc>
+</wpt>
+<wpt lat="28.455361111" lon="-17.843166667">
+  <name>FaroFuen</name>
+  <cmt>Fuencaliente</cmt>
+  <desc>Fuencaliente</desc>
+</wpt>
+<wpt lat="28.730166667" lon="-17.813666667">
+  <name>F.Olen</name>
+  <cmt>Fuente_Olen</cmt>
+  <desc>Fuente_Olen</desc>
+</wpt>
+<wpt lat="28.583250000" lon="-17.837527778">
+  <name>HoyoNegr</name>
+  <cmt>Hoyo_Negro</cmt>
+  <desc>Hoyo_Negro</desc>
+</wpt>
+<wpt lat="28.754305556" lon="-17.884805556">
+  <name>Muchacho</name>
+  <cmt>Rq.Muchachos</cmt>
+  <desc>Rq.Muchachos</desc>
+</wpt>
+<wpt lat="28.609750000" lon="-17.839944444">
+  <name>M.Birigo</name>
+  <cmt>M_Birigoyo</cmt>
+  <desc>M_Birigoyo</desc>
+</wpt>
+<wpt lat="28.629027778" lon="-17.802027778">
+  <name>S.Isidro</name>
+  <cmt>San_Isidro</cmt>
+  <desc>San_Isidro</desc>
+</wpt>
+<wpt lat="28.688250000" lon="-17.761611111">
+  <name>S.Maria</name>
+  <cmt>Santa_Maria</cmt>
+  <desc>Santa_Maria</desc>
+</wpt>
+<wpt lat="28.647277778" lon="-17.944055556">
+  <name>Tazacort</name>
+  <cmt>Tazacorte</cmt>
+  <desc>Tazacorte</desc>
+</wpt>
+<wpt lat="28.692805556" lon="-17.924444444">
+  <name>T.d.Time</name>
+  <cmt>Tor_del_Time</cmt>
+  <desc>Tor_del_Time</desc>
+</wpt>
+<wpt lat="28.802388889" lon="-17.906944444">
+  <name>Zarza</name>
+  <cmt>La_Zarza</cmt>
+  <desc>La_Zarza</desc>
+</wpt>
+<wpt lat="28.801638889" lon="-17.908722222">
+  <name>Zarzita</name>
+  <cmt>La_Zarzita</cmt>
+  <desc>La_Zarzita</desc>
+</wpt>
+<wpt lat="28.723027778" lon="-17.875583333">
+  <name>SRVCENTR</name>
+  <cmt>Servicecentr</cmt>
+  <desc>Servicecentr</desc>
+</wpt>
+<wpt lat="28.501916667" lon="-17.843888889">
+  <name>TGR130</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.688777778" lon="-17.927250000">
+  <name>TGR131</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.622972222" lon="-17.844805556">
+  <name>TPRLP14</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.562611111" lon="-17.836833333">
+  <name>TPRLP15</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.587416667" lon="-17.837694444">
+  <name>TPRLP16</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.619361111" lon="-17.858638889">
+  <name>TSLEP103</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.603194444" lon="-17.846388889">
+  <name>TSLEP107</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.601944444" lon="-17.880944444">
+  <name>TSLEP107</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.525138889" lon="-17.837555556">
+  <name>TSLFU110</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.536055556" lon="-17.842666667">
+  <name>TSLFU111</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.767166667" lon="-17.832916667">
+  <name>TSLSAS30</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.703972222" lon="-17.925750000">
+  <name>TSLTJ71</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.702138889" lon="-17.951472222">
+  <name>TSLTJ71a</name>
+  <cmt>Trailhead</cmt>
+  <desc>Trailhead</desc>
+</wpt>
+<wpt lat="28.561555556" lon="-17.836500000">
+  <name>GC7CF</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.518166667" lon="-17.834250000">
+  <name>GCN1TQ</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.603000000" lon="-17.877250000">
+  <name>GCNXY8</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.622666667" lon="-17.848777778">
+  <name>GCHT8C</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.480750000" lon="-17.856500000">
+  <name>GCNQXK</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.653916667" lon="-17.852722222">
+  <name>GCD098</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.455250000" lon="-17.843555556">
+  <name>GCM6N0</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.668027778" lon="-17.831361111">
+  <name>GC405B</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.651138889" lon="-17.946194444">
+  <name>GCD096</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.692055556" lon="-17.875194444">
+  <name>GCNXKV</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.703805556" lon="-17.845555556">
+  <name>GCNXMD</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.710027778" lon="-17.954611111">
+  <name>GCHND9</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.766861111" lon="-17.833194444">
+  <name>GC405C</name>
+  <cmt>Geocache</cmt>
+  <desc>Geocache</desc>
+</wpt>
+<wpt lat="28.698000000" lon="-17.949055556">
+  <name>FH-HAUS</name>
+</wpt>
+<wpt lat="28.696750000" lon="-17.950194444">
+  <name>FH-DRIVE</name>
+</wpt>
+<wpt lat="28.710055556" lon="-17.954638889">
+  <name>GCHND9-1</name>
+</wpt>
+<wpt lat="28.710944444" lon="-17.955277778">
+  <name>GCHND9-2</name>
+</wpt>
+<wpt lat="28.707222222" lon="-17.950888889">
+  <name>GCHND9-3</name>
+</wpt>
+<wpt lat="28.722111111" lon="-17.979694444">
+  <name>PL VETA</name>
+  <cmt>PLAYA VETA</cmt>
+  <desc>PLAYA VETA</desc>
+</wpt>
+<rte>
+  <name>GCHND9</name>
+  <rtept lat="28.710027778" lon="-17.954611111">
+    <name>GCHND9</name>
+    <cmt>Geocache</cmt>
+    <desc>Geocache</desc>
+  </rtept>
+  <rtept lat="28.710055556" lon="-17.954638889">
+    <name>GCHND9-1</name>
+  </rtept>
+  <rtept lat="28.710944444" lon="-17.955277778">
+    <name>GCHND9-2</name>
+  </rtept>
+  <rtept lat="28.707222222" lon="-17.950888889">
+    <name>GCHND9-3</name>
+  </rtept>
+</rte>
+</gpx>
diff --git a/reference/alanwpr.wpr b/reference/alanwpr.wpr
new file mode 100644 (file)
index 0000000..ecada54
Binary files /dev/null and b/reference/alanwpr.wpr differ
diff --git a/testo b/testo
index 4e150b45da4919f470605df7097828344c1d4dea..3b3f4889cc93eda328326ef15ad4a728f6b1ca47 100755 (executable)
--- a/testo
+++ b/testo
@@ -1169,5 +1169,23 @@ ${PNAME} -i gpx -f ${REFERENCE}/expertgps.gpx -o raymarine -F ${TMPDIR}/expertgp
 compare ${TMPDIR}/expertgps.rwf ${REFERENCE}/expertgps.rwf
 
 
+#
+# Alan MAp500 waypoint & route test
+#
+rm -f ${TMPDIR}/alanwpr*
+${PNAME} -i alanwpr -f ${REFERENCE}/alanwpr.wpr -o alanwpr -F ${TMPDIR}/alanwpr-new.wpr
+${PNAME} -i alanwpr -f ${TMPDIR}/alanwpr-new.wpr -o gpx -F ${TMPDIR}/alanwpr-new.gpx
+grep -v '<time>.*<\/time>' ${TMPDIR}/alanwpr-new.gpx > ${TMPDIR}/alanwpr-sed.gpx
+compare ${TMPDIR}/alanwpr-sed.gpx ${REFERENCE}/alanwpr.gpx
+
+#
+# Alan Map500 tracklogs< test
+#
+rm -f ${TMPDIR}/alantrl*
+${PNAME} -i alantrl -f ${REFERENCE}/alantrl.trl -o alantrl -F ${TMPDIR}/alantrl-new.trl
+${PNAME} -i alantrl -f ${TMPDIR}/alantrl-new.trl -o gpx -F ${TMPDIR}/alantrl-new.gpx
+grep -v '<time>.*<\/time>' ${TMPDIR}/alantrl-new.gpx > ${TMPDIR}/alantrl-sed.gpx
+compare ${TMPDIR}/alantrl-sed.gpx ${REFERENCE}/alantrl.gpx
+
 
 exit 0
diff --git a/vecs.c b/vecs.c
index 05f8e3dbd0d939c9c1b41b691d5e5bb722b1dd66..80dac5122adc5000360cab5a094333a27e5cff0d 100644 (file)
--- a/vecs.c
+++ b/vecs.c
@@ -112,6 +112,8 @@ extern ff_vecs_t wbt_fvecs;
 extern ff_vecs_t gtc_vecs;
 extern ff_vecs_t dmtlog_vecs;
 extern ff_vecs_t raymarine_vecs;
+extern ff_vecs_t alanwpr_vecs;
+extern ff_vecs_t alantrl_vecs;
 
 static
 vecs_t vec_list[] = {
@@ -616,6 +618,18 @@ vecs_t vec_list[] = {
                "Raymarine Waypoint File (.rwf)",
                "rwf"
        },
+        {
+                &alanwpr_vecs,
+                "alanwpr",
+                "Alan Map500 waypoints and routes (.wpr)",
+                "wpr"
+        },
+        {
+                &alantrl_vecs,
+                "alantrl",
+                "Alan Map500 tracklogs (.trl)",
+                "trl"
+        },
        {
                NULL,
                NULL,
diff --git a/xmldoc/formats/alan.xml b/xmldoc/formats/alan.xml
new file mode 100644 (file)
index 0000000..83876ca
--- /dev/null
@@ -0,0 +1,5 @@
+<para>
+This format supports .wpr (waypoints and routes) and .trl (tracklogs) files of
+the Alan Map 500 device.
+Support is currently limited to Alan'S Map 500 operating systems 2.x 
+</para>
\ No newline at end of file
index 9eed89aa2361f030190abb37f6b9ddbc6a8dd884..93ba4180bdd5a67a5211d466cc15df9e628ab6d5 100644 (file)
@@ -45,7 +45,7 @@
 <member>GPSMAP 76CX</member> 
 <member>GPSMAP 96</member> 
 <member>GPSMAP 96C</member> 
-<member>Nuvi 300<footnote id="gpx"><para>This unit uses GPX format, not Garmin protocol.  Therefore one should communicate with it by reading and writing GPX files instead of using this format.</para></footnote></member>
+<member>Nuvi 300<footnote id="gpx"><para>This unit uses GPX format, not Garmin protocol.  Therefore one should communicate with it by reading and writing GPX files instead of using this format.  Members of this class of products do not support realtime positioning protocol.</para></footnote></member>
 <member>Nuvi 310<footnoteref linkend="gpx"/></member>
 <member>Nuvi 350<footnoteref linkend="gpx"/></member>
 <member>Nuvi 370<footnoteref linkend="gpx"/></member>
@@ -180,5 +180,5 @@ so they are named 'Custom 0' through 'Custom 511'.
 <para>
 This module also supports <link linkend="tracking">realtime tracking</link> 
 which allows realtime position reports from a Garmin GPS receiver over USB
-or serial.
+or serial.  
 </para>